gpt4 book ai didi

C++ vector 加法comp错误:

转载 作者:行者123 更新时间:2023-11-28 06:35:56 25 4
gpt4 key购买 nike

所以我有这段代码:

#include <iostream>
#include <vector>
using namespace std;

vector <int> suma(vector <int> t, vector <int> m){
int i;
vector <int> sumat;
for(i=0; i<t.size();i++){
sumat[i]=t[i]+m[i];
}
return sumat;
}
int main(){
vector <int> a(4,0);
a[0]=5;
a[1]=5;
a[2]=3;
a[3]=0;
vector <int> b(4,0);
b[0]=5;
b[1]=5;
b[2]=3;
b[3]=0;
cout<< suma(a,b) <<endl;
}

这是我在最后一行中遇到的 comp 错误:

[Error] no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream}' and 'std::vector')

这是为什么?

最佳答案

C++ 没有定义 ostream operator <<对于 vector ,很可能是因为有很多不同的方式可以输出它们。每行一个条目,如下所示,或以逗号分隔,或包含在括号内。

您可以定义自己的<<使用“运算符重载”的 vector 运算符。这允许同一运算符(operator)根据调用参数调用不同的代码。

全局运算符重载方法有特定的调用约定,第一个参数是对运算符左边对象的引用(例如cout中的cout << v,第二个参数是运算符右边的值)运算符(v)。对于 << 运算符,您通常将参数定义为常量引用,因为您通常不会在输出时更改值。

<< 的返回值运算符通常是第一个参数。这允许您将调用链接到 <<喜欢cout << vec << "Done" << std::endl .

例如:

ostream &operator << (ostream &out, const vector<int> &vec)
{
for (auto &&val : vec)
out << val << std::endl;
return out;
}

如果你不能使用 c++11,你可以像这样使用旧式循环:

ostream &operator << (ostream &out, const vector<int> &vec)
{
for (vector<int>::size_type i = 0; i < vec.size(); i++)
out << vec[i] << std::endl;
return out;
}

或其他使用迭代器的类似循环。

附言。不相关的注释 - 您需要初始化 sumat 的大小在您的代码中,或使用 push_back .此刻它会崩溃。

关于C++ vector 加法comp错误:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com