错误 C2679。错误 1 错误 C2679:二进制'<<':找不到采用类型 'std::vector<_Ty>' 的右侧操作数的运算符

error c2679.Error 1 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::vector<_Ty>'

本文关键字:错误 lt C2679 Ty gt 操作数 运算符 二进制 找不到 std 类型      更新时间:2023-10-16

我在下面写了一个简单的程序来使用向量,但这里有一个错误,有人能帮忙吗?

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
void main()
{
    vector<int>a(10,1);
    cout<<a<<endl;
}

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

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

把这段代码放在主函数之前,它应该可以工作了。

试试这个:

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

(但请确保<<运算符对于T是重载的)

如果你不想让<lt;操作员:

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