cplusplus
.com
教程
参考
文章
论坛
C++
教程
参考
文章
论坛
参考
C 库
<cassert> (assert.h)
<cctype> (ctype.h)
<cerrno> (errno.h)
C++11
<cfenv> (fenv.h)
<cfloat> (float.h)
C++11
<cinttypes> (inttypes.h)
<ciso646> (iso646.h)
<climits> (limits.h)
<clocale> (locale.h)
<cmath> (math.h)
<csetjmp> (setjmp.h)
<csignal> (signal.h)
<cstdarg> (stdarg.h)
C++11
<cstdbool> (stdbool.h)
<cstddef> (stddef.h)
C++11
<cstdint> (stdint.h)
<cstdio> (stdio.h)
<cstdlib> (stdlib.h)
<cstring> (string.h)
C++11
<ctgmath> (tgmath.h)
<ctime> (time.h)
C++11
<cuchar> (uchar.h)
<cwchar> (wchar.h)
<cwctype> (wctype.h)
容器
C++11
<array>
<deque>
C++11
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
C++11
<unordered_map>
C++11
<unordered_set>
<vector>
输入/输出
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
多线程
C++11
<atomic>
C++11
<condition_variable>
C++11
<future>
C++11
<mutex>
C++11
<thread>
其他
<algorithm>
<bitset>
C++11
<chrono>
C++11
<codecvt>
<complex>
<exception>
<functional>
C++11
<initializer_list>
<iterator>
<limits>
<locale>
<memory>
<new>
<numeric>
C++11
<random>
C++11
<ratio>
C++11
<regex>
<stdexcept>
<string>
C++11
<system_error>
C++11
<tuple>
C++11
<type_traits>
C++11
<typeindex>
<typeinfo>
<utility>
<valarray>
<iterator>
迭代器
iterator_traits
函数
advance
back_inserter
C++11
begin
distance
C++11
end
front_inserter
inserter
C++11
make_move_iterator
C++11
next
C++11
prev
迭代器类别
bidirectional_iterator_tag
forward_iterator_tag
input_iterator_tag
output_iterator_tag
random_access_iterator_tag
预定义迭代器
back_insert_iterator
front_insert_iterator
insert_iterator
istream_iterator
istreambuf_iterator
C++11
move_iterator
ostream_iterator
ostreambuf_iterator
reverse_iterator
参考
<iterator>
output_iterator_tag
类
<iterator>
std::
output_iterator_tag
struct output_iterator_tag {};
输出迭代器类别
用于标识迭代器为
输出迭代器
的空类
输出迭代器
输入
输出
前向
双向
随机访问
输出迭代器是可用于顺序输出操作的迭代器,通过该迭代器指向的每个元素只能写入一次值,然后迭代器递增。
所有
前向
、
双向
和
随机访问
迭代器(非
常量迭代器
)也都是有效的
输出迭代器
。
不存在单一类型的
输出迭代器
:每个容器可能定义自己的特定迭代器类型,能够遍历容器并访问其元素。但所有
输出迭代器
至少支持以下操作:
属性
有效的表达式
是
可拷贝构造
、
可拷贝赋值
和
可析构
的
X b(a);
b = a;
可以作为
左值
解引用(如果处于
可解引用
状态)。
它只能作为赋值语句的左侧被解引用。
一旦解引用,其迭代器值可能不再
可解引用
。
*a = t
可以递增。
++a
a++
*a++ = t
属性
有效的表达式
是
可拷贝构造
、
可拷贝赋值
和
可析构
的
X b(a);
b = a;
可以作为
左值
解引用(如果处于
可解引用
状态)。
它只能作为赋值语句的左侧被解引用。
一旦解引用,其迭代器值可能不再
可解引用
。
*a = t
可以递增。
++a
a++
*a++ = t
左值是
可交换的
。
swap
(a,b)
其中
X
是
输出迭代器类型
,
a
和
b
是该迭代器类型的对象,而
t
是由迭代器类型指向的对象类型(或可以赋值给由类型
X
的对象解引用返回的
左值
的其他类型)的对象。
需要
输出迭代器
的算法应该是
单趟输出算法
:每个迭代器位置最多解引用一次。
另见
input_iterator_tag
输入迭代器类别
(类)
forward_iterator_tag
前向迭代器类别
(class)
bidirectional_iterator_tag
双向迭代器类别
(class)
random_access_iterator_tag
随机访问迭代器类别
(class)
迭代器
迭代器基类
(class template)