std::istream_iterator<T,CharT,Traits,Distance>::istream_iterator
来自cppreference.com
< cpp | iterator | istream
iterator
迭代器库
| 迭代器概念 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迭代器原语 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 算法概念与工具 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 间接可调用概念 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 常用算法要求 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 工具 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迭代器适配器 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 流迭代器 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迭代器定制点 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++20)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++20)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迭代器操作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 范围访问 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::istream_iterator
| 成员函数 | ||||
|
istream_iterator::istream_iterator
|
||||
| 非成员函数 | ||||
|
(C++20
前)
|
| (1) | ||
|
istream_iterator();
|
(C++11 前) | |
|
constexpr
istream_iterator();
|
(C++11 起) | |
|
constexpr
istream_iterator( std::default_sentinel_t );
|
(2) | (C++20 起) |
|
istream_iterator( istream_type& stream
);
|
(3) | |
| (4) | ||
|
istream_iterator( const
istream_iterator& other );
|
(C++11 前) | |
|
istream_iterator( const
istream_iterator& other ) = default;
|
(C++11 起) | |
1,2) 构造流尾迭代器,值初始化存储的值。如果在定义 auto x = T();
中的初始化器是常量初始化器,那么此构造函数是 constexpr 的 (C++11 起)。
3) 初始化迭代器并在数据成员中存储 stream 的地址。再从输入流进行首次读取以初始化缓冲数据成员。
4) 构造 other 的副本。如果 std::is_trivially_copy_constructible<T>::value 是 true ,那么此构造函数是平凡复制构造函数。 (C++11 起)
参数
| stream | - | 用于初始化 istream_iterator 的流
|
| other | - | 同类型的另一 istream_iterator
|
示例
运行此代码
#include <algorithm> #include <iostream> #include <iterator> #include <sstream> int main() { std::istringstream stream("1 2 3 4 5"); std::copy( std::istream_iterator<int>(stream), std::istream_iterator<int>(), std::ostream_iterator<int>(std::cout, " ") ); }
输出:
1 2 3 4 5
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
|---|---|---|---|
| LWG 1280 | C++98 | 重载 (3) 会直接存储 stream | 改为存储它的地址 |
| P0738R2 | C++98 | 首次读取可以延迟到首次解引用 | 一定会在构造函数中进行 |