C 通过使用复制显示对向量

C++ display a vector of pairs by using copy

本文关键字:显示 向量 复制      更新时间:2023-10-16
std::vector<std::pair<Pos, int>> v;
// sort and other stuff...
std::ostream_iterator<std::vector<std::pair<Pos, int>>> out_it(std::cout, "n");
std::copy(v.begin(), v.end(), out_it); // error

目前正在研究STL并尝试使用copy打印到控制台。我有一个用于显示对的operator<<,我应该做一个以显示向量吗?还是还有另一种方式?Pos只是我定义的类,它具有一个私有成员字符串。

这将有效:

#include  <iostream>
#include  <vector>
#include  <iterator>
namespace std {
template <class T1, class T2>
    std::ostream& operator<<(std::ostream& out, const std::pair< T1, T2>& rhs)
    {
      out << "first: " << rhs.first << " second: " << rhs.second;
      return out;
    }
}
int main(){
    std::pair< size_t, int > pp(1,2);
    std::vector<std::pair< size_t, int >> v;
    v.push_back(pp);
    v.push_back(pp);
    v.push_back(pp);
    std::ostream_iterator<std::pair< size_t, int >> out_it(std::cout, "n");
    std::copy(v.begin(), v.end(), out_it); 
}

std :: copy()从第一个参数给出的值迭代到第二个,使用第三参数作为目标的迭代器。类型应该匹配,显然。

如果您为向量流定义迭代器,则不需要std ::复制即可输出单个向量(这应该是操作员的代码&lt;&lt;?)