错误c2679.Error 1错误C2679:二进制'<<' :找不到哪个运算符采用'std :: vector< _Ty>'类型的右手操作数

时间:2015-02-24 07:48:12

标签: c++

我在下面写这个简单的程序来使用向量,但这里有错误,任何人都可以帮忙吗?

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

void main()
{
    vector<int>a(10,1);
    cout<<a<<endl;
}

2 个答案:

答案 0 :(得分:0)

没有运算符&lt;&lt;(ostream&amp;,vector const&amp;)。你可以自己提供一个:

ostream& operator<<(ostream& os, vector<int> const& v) {
    for (int i=0; i<v.size(); ++i) {
        os << v[i] <<  ", ";
    }
    return os;
}

将此代码放在main函数之前,它应该可以正常工作。

答案 1 :(得分:0)

试试这个:

std::ostream& operator<<(std::ostream& stream, std::vector<int> const& vec) {
    for (auto it = vec.begin(); it != vec.end(); it++) {
        stream << *it <<  " ";
    }
    return stream;
}

或者:

template <typename T>
std::ostream& operator<<(std::ostream& stream, std::vector<T> const& vec) {
    for (auto it = vec.begin(); it != vec.end(); it++) {
        stream << *it <<  " ";
    }
    return stream;
}

(但请确保&lt;&lt;&lt;运算符为T超载)

如果您不想重载&lt;&lt;操作者:

for (auto& item : a) {
    std::cout << item << " ";
}