如何在<int> c++ 中将矢量打印到终端

How to print vector<int> to terminal in c++

本文关键字:打印 终端 gt lt int c++      更新时间:2023-10-16

我正在尝试使用"cout"将整数向量打印到终端,但在编译过程中收到错误消息:

与"运算符<<"不匹配(操作数类型为"std::basic_ostream"和"std::vector"( cout <<"点上的视差:"<<视差向量<<endl;

代码片段如下所示:

vector<int> disparityVector;
for ( int i=0; i<drawPixels.size(); i++)    // Get disparity at each point of the drawn line
disparityVector.push_back((int)disparityMapOutput.at<int16_t>(pos[i].y, pos[i].x));
cout << "Disparity at points: " << disparityVector << endl;

将值分配给向量没有错误,只有代码的"cout"部分出错

例如,使用ostream_iterator.

该页面的示例:

// ostream_iterator example
#include <iostream>     // std::cout
#include <iterator>     // std::ostream_iterator
#include <vector>       // std::vector
#include <algorithm>    // std::copy
int main () {
std::vector<int> myvector;
for (int i=1; i<10; ++i) myvector.push_back(i*10);
std::ostream_iterator<int> out_it (std::cout,", ");
std::copy ( myvector.begin(), myvector.end(), out_it );
return 0;
}

如果你想按照你编码的方式去做,你需要下面这样的东西。

template<class T>
inline std::ostream& operator<< (std::ostream& o, std::vector<T> const& v) {
for (auto const& i : v)
o << i << " ";
return o;
}
std::ostream& operator<<(std::ostream& os, const vector<int>& v)
{
std::ostream_iterator<int> _oit(cout, " ");
std::copy(v.begin(), v.end(), _oit);
return os;
}

此错误意味着vector<T>没有operator<<实现。 您需要遍历矢量并打印每个元素:

for(int i = 0; i < disparityVector.size; i++) {
cout << disparityVector[i];
}
cout << endl;