C++ 如何使用异常C++;第一章第一部分工作?
Herb提供了一种通过向量循环的方法:C++ 如何使用异常C++;第一章第一部分工作?,c++,vector,stl,copy,C++,Vector,Stl,Copy,Herb提供了一种通过向量循环的方法: for(vector<int>::iterator i = v.begin(); i < v.end(); i++) { cout << *i << endl; } 这就是我困惑的地方。我看不到Outputierator指向什么的定义。此外,我看不出行*result=*如何在第一行可能转换为调用cout您只查找输出迭代器的功能输出迭代器只是标准库中的一组类型所满足的一组需求。其中一种类型是std::ostrea
for(vector<int>::iterator i = v.begin(); i < v.end(); i++) {
cout << *i << endl;
}
这就是我困惑的地方。我看不到Outputierator指向什么的定义。此外,我看不出行
*result=*如何在第一行
可能转换为调用cout您只查找输出迭代器的功能<代码>输出迭代器
只是标准库中的一组类型所满足的一组需求。其中一种类型是std::ostream\u迭代器
,因此您需要了解它在std::copy
上下文中的行为
因此,在复制算法中,我们首先执行*结果=*first
。首先,std::ostream\u迭代器的操作符*
什么也不做——它只返回迭代器本身。当我们分配给这个迭代器时,神奇就发生了。如果您查找,您将看到分配给该迭代器将插入(使用您只查找输出迭代器的功能。输出迭代器
只是标准库中的一组类型所满足的一组要求。其中一种类型是std::ostream\u迭代器
,因此您需要查看它在std::copy
上下文中的行为
所以在复制算法中,我们要做的是*result=*first
。首先,std::ostream\u迭代器的操作符*
什么都不做-它只返回迭代器本身。当我们分配给这个迭代器时,神奇的事情发生了。如果你查找,你会看到分配给这个迭代器的操作将插入(使用查看ostream_迭代器。它的运算符=()起到了神奇的作用。顺便说一句:这是一个关于如何使用算法的很好的示例,但是在C++11for(const auto&obj:myObjVector)中,{std::无法查看ostream_迭代器。它的运算符=()这是一个关于如何使用算法的很好的例子,但是在C++11for(const auto&obj:myObjVector){std::cout中
copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\n"));
template<class InputIterator, class OutputIterator>
OutputIterator copy (InputIterator first, InputIterator last,
OutputIterator result)
{
while (first!=last) {
*result = *first;
++result; ++first;
}
return result;
}
reference operator*() const;
Dereference iterator
Returns *this.
/// Writes @a value to underlying ostream using operator<<. If
/// constructed with delimiter string, writes delimiter to ostream.
ostream_iterator&
operator=(const _Tp& __value)
{
__glibcxx_requires_cond(_M_stream != 0,
_M_message(__gnu_debug::__msg_output_ostream)
._M_iterator(*this));
*_M_stream << __value;
if (_M_string) *_M_stream << _M_string;
return *this;
}