std::common_iterator - cppreference.com (original) (raw)
std::common_iterator
is an iterator I
/ sentinel S
adaptor that may represent a non-common range (where the types of I
and S
differ) as a common_range, by containing either an iterator or a sentinel, and defining the appropriate equality comparison operators operator==.
std::common_iterator
can be used as a "bridge" between sequences represented by iterator/sentinel pair and legacy functions that expect common_range-like sequences.
Contents
- 1 Data members
- 2 Member functions
- 3 Non-member functions
- 4 Helper classes
- 5 Example
- 6 References
- 7 See also
[edit] Data members
Member name | Definition |
---|---|
var | an object of type std::variant<I, S>(exposition-only member object*) |
[edit] Member functions
[edit] Non-member functions
| | compares the underlying iterators or sentinels (function template) [edit] | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | computes the distance between two iterator adaptors (function template) [edit] | | | casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function) [edit] | | | swaps the objects pointed to by two underlying iterators (function template) [edit] |
[edit] Helper classes
[edit] Example
#include
#include
#include
#include
#include
template
void fire(ForwardIter first, ForwardIter last)
{
std::copy(first, last, std::ostream_iterator<std::string>{std::cout, " "});
}
int main()
{
std::list<std::string> stars{"Pollux", "Arcturus", "Mira", "Aldebaran", "Sun"};
using IT = std::common_iterator<
std::counted_iterator<std::list<std::string>::iterator>,
std::default_sentinel_t>;
fire(IT(std::counted_iterator(stars.begin(), stars.size() - 1)),
IT(std::default_sentinel));
}
Output:
Pollux Arcturus Mira Aldebaran
[edit] References
C++23 standard (ISO/IEC 14882:2024):
23.5.5 Common iterators [iterators.common]
C++20 standard (ISO/IEC 14882:2020):
23.5.4 Common iterators [iterators.common]