Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
Functions

Expression

Return type

Returns

Complexity

begin(x)

range_iterator<X>::type

p.first if p is of type std::pair<T> a if a is an array range_begin(x) if that expression would invoke a function found by ADL t.begin() otherwise

constant time

end(x)

range_iterator<X>::type

p.second if p is of type std::pair<T> a + sz if a is an array of size sz range_end(x) if that expression would invoke a function found by ADL t.end() otherwise

constant time

empty(x)

bool

boost::begin(x) == boost::end(x)

constant time

distance(x)

range_difference<X>::type

std::distance(boost::begin(x),boost::end(x))

-

size(x)

range_size<X>::type

range_calculate_size(x) which by default is boost::end(x) - boost::begin(x). Users may supply alternative implementations by implementing range_calculate_size(x) so that it will be found via ADL

constant time

rbegin(x)

range_reverse_iterator<X>::type

range_reverse_iterator<X>::type(boost::end(x))

constant time

rend(x)

range_reverse_iterator<X>::type

range_reverse_iterator<X>::type(boost::begin(x))

constant time

const_begin(x)

range_iterator<const X>::type

range_iterator<const X>::type(boost::begin(x))

constant time

const_end(x)

range_iterator<const X>::type

range_iterator<const X>::type(boost::end(x))

constant time

const_rbegin(x)

range_reverse_iterator<const X>::type

range_reverse_iterator<const X>::type(boost::rbegin(x))

constant time

const_rend(x)

range_reverse_iterator<const X>::type

range_reverse_iterator<const X>::type(boost::rend(x))

constant time

as_literal(x)

iterator_range<U> where U is Char* if x is a pointer to a string and U is range_iterator<X>::type otherwise

[s,s + std::char_traits<X>::length(s)) if s is a Char* or an array of Char [boost::begin(x),boost::end(x)) otherwise

linear time for pointers to a string or arrays of Char, constant time otherwise

as_array(x)

iterator_range<X>

[boost::begin(x),boost::end(x))

The special const_-named functions are useful when you want to document clearly that your code is read-only.

as_literal() can be used internally in string algorithm libraries such that arrays of characters are handled correctly.

as_array() can be used with string algorithm libraries to make it clear that arrays of characters are handled like an array and not like a string.

Notice that the above functions should always be called with qualification (boost::) to prevent unintended Argument Dependent Lookup (ADL).


PrevUpHomeNext