Namespaces
Variants

std:: common_iterator

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
定义于头文件 <iterator>
template < std:: input_or_output_iterator I, std:: sentinel_for < I > S >

requires ( ! std:: same_as < I, S > && std:: copyable < I > )

class common_iterator ;
(C++20 起)

std::common_iterator 是一种迭代器 I / 哨位 S 适配器,可将非公共范围(其中 I S 类型不同)表示为 common_range ,其实现方式是包含一个迭代器或哨位,并定义相应的相等比较运算符 operator ==

std::common_iterator 可用作迭代器/哨位对表示的序列与期望 common_range 类序列的传统函数之间的"桥梁"。

目录

数据成员

成员名称 定义
var 一个类型为 std:: variant < I, S > 的对象
( 仅用于说明的成员对象* )

成员函数

构造新的 common_iterator
(公开成员函数)
赋值另一个 common_iterator
(公开成员函数)
访问指向的元素
(公开成员函数)
推进 common_iterator
(公开成员函数)

非成员函数

(C++20)
比较底层迭代器或哨兵
(函数模板)
(C++20)
计算两个迭代器适配器间的距离
(函数模板)
(C++20)
将底层迭代器解引用结果转换为其关联的右值引用类型
(函数)
(C++20)
交换两个底层迭代器所指向的对象
(函数模板)

辅助类

计算 std::common_iterator 类型的关联差值类型
(类模板特化)
std::common_iterator 类型的属性提供统一接口
(类模板特化)

示例

#include <algorithm>
#include <iostream>
#include <iterator>
#include <list>
#include <string>
template<class ForwardIter>
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));
}

输出:

Pollux Arcturus Mira Aldebaran

参考文献

  • C++23 标准 (ISO/IEC 14882:2024):
  • 23.5.5 通用迭代器 [iterators.common]
  • C++20 标准 (ISO/IEC 14882:2020):
  • 23.5.4 通用迭代器 [iterators.common]

参见

指定一个范围拥有相同的迭代器和哨兵类型
(概念)
view 转换为 common_range
(类模板) (范围适配器对象)