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>
input_iterator_tag
類
<iterator>
std::
input_iterator_tag
struct input_iterator_tag {};
輸入迭代器類別
用於標識迭代器為
輸入迭代器
的空類
輸入迭代器
輸入
輸出
前向
雙向
隨機訪問
輸入迭代器是在順序輸入操作中使用的迭代器,其中迭代器指向的每個值僅被讀取一次,然後迭代器會被遞增。
所有
前向
、
雙向
和
隨機訪問
迭代器也是有效的
輸入迭代器
。
輸入迭代器並沒有單一的型別:每個容器都可以定義自己的特定迭代器型別來遍歷它並訪問其元素。但是,所有
輸入迭代器
至少支援以下操作:
屬性
有效的表示式
可以
複製構造
、
複製賦值
和
析構
X b(a);
b = a;
可以使用相等/不等運算子進行等價比較
(當兩個迭代器都
在定義域內
時才有意義)。
a == b
a != b
(如果在
可解引用狀態
下)可以作為
右值
解引用。
*a
a->m
可以遞增(如果處於
可解引用狀態
)。
結果是也
可解引用
或
越界
迭代器。
遞增後,之前的迭代器值不要求是
可解引用的
。
++a
(void)a++
*a++
其
值型別
不一定需要可賦值
t = u
非必需
屬性
有效的表示式
可以
複製構造
、
複製賦值
和
析構
X b(a);
b = a;
可以使用相等/不等運算子進行等價比較
(當兩個迭代器都
在定義域內
時才有意義)。
a == b
a != b
(如果在
可解引用狀態
下)可以作為
右值
解引用。
*a
a->m
可以遞增(如果處於
可解引用狀態
)。
結果是也
可解引用
或
越界
迭代器。
遞增後,之前的迭代器值不要求是
可解引用的
。
++a
(void)a++
*a++
其
值型別
不一定需要可賦值
t = u
非必需
左值是
可交換的
。
swap
(a,b)
其中
X
是一個
輸入迭代器型別
,
a
和
b
是該迭代器型別的物件,而
t
和
u
是迭代器型別指向的物件。
需要
輸入迭代器
的演算法應該是
單次遍歷輸入演算法
:演算法最多遍歷迭代器位置一次。
另見
output_iterator_tag
輸出迭代器類別
(class)
forward_iterator_tag
前向迭代器類別
(class)
bidirectional_iterator_tag
雙向迭代器類別
(class)
random_access_iterator_tag
隨機訪問迭代器類別
(class)
迭代器
迭代器基類
(class template)