C++ 使用复制显示成对向量
C++ display a vector of pairs by using copy
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
只是我定义的一个class,它有一个私有成员字符串。
这会起作用:
#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::copy 输出单个向量(应该是 operator<< 的代码?)
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
只是我定义的一个class,它有一个私有成员字符串。
这会起作用:
#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::copy 输出单个向量(应该是 operator<< 的代码?)