2015-02-24 67 views
0

我写这个简单的程序如下使用向量,但这里是错误可以帮助吗?错误c2679.Error 错误C2679:二进制“<<”:没有操作员发现这需要类型的右手操作数“的std ::矢量<_Ty>”

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

using namespace std; 

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

如果您想知道如何输出矢量,请参考[此问题](http://stackoverflow.com/questions/10750057/c-printing-out-the-contents-of-a-vector)。 – Theolodis 2015-02-24 07:53:09

+0

错误消息非常明显 - 您不能使用<<来流出一个向量。 – 2015-02-24 07:53:43

+0

@LuboAntonov如何显示任何矢量?你能给我简单的初学者学习者的第一阶段程序吗?谢谢 – 2015-02-25 05:25:15

回答

0

没有操作者< <(ostream的&,矢量常量&)。你可以自己提供一个:

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

把这个代码放在你的主函数之前,它应该工作。

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; 
} 

(但要确保< <算overloeaded为T)

如果你不想超载< <运营商:

for (auto& item : a) { 
    std::cout << item << " "; 
} 
相关问题