一个函数返回值为vector类型的问题
我的代码这样写:
VC++里编译通过,但DEV-CPP里编不过去,错误信息:
In function `int main()':
1.cpp non-lvalue in unary `&'
no match for call to `(std::plus<_Tp>) (std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&)'
note d:\DEV-CPP\include\c++\3.4.2\bits\stl_function.h:138 candidates are: _Tp std::plus<_Tp>::operator()(const _Tp&, const _Tp&) const
#include "iostream"
#include "vector"
using namespace std;
vector<int> plus(vector<int> &v1,vector<int> &v2)
{
int lenth=v1.size()>v2.size()?v1.size():v2.size();
vector<int> v(lenth+1);
for(int i=0;i<lenth;i++)
{
v[i]=v1[i]+v2[i];
if(v[i]>=10)
{
v[i+1]++;
v[i]-=10;
}
}
if(v[lenth]==0)
{
vector<int>::iterator it=v.end()-1;
v.erase(it);
}
return v;
}
int main()
{
vector<int> v1;
vector<int> v2;
v1.push_back(3);
v1.push_back(5);
v1.push_back(8);
v2.push_back(9);
v2.push_back(9);
v2.push_back(9);
vector<int> v3;
v3=plus(v1,v2);
for(int i=0;i<v3.size();i++)
{
cout<<v3[i];
}
//system("pause");
return 0;
}
VC++里编译通过,但DEV-CPP里编不过去,错误信息:
In function `int main()':
1.cpp non-lvalue in unary `&'
no match for call to `(std::plus<_Tp>) (std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&)'
note d:\DEV-CPP\include\c++\3.4.2\bits\stl_function.h:138 candidates are: _Tp std::plus<_Tp>::operator()(const _Tp&, const _Tp&) const
...全文
相关推荐
C++ vector返回值解析[源码]
当涉及到函数返回值时,vector的行为与其他数据类型有所不同,特别是在返回一个vector对象时,会涉及到对vector的拷贝机制。
unity vector返回值拓展
总之,"Unity Vector返回值拓展"是通过自定义的扩展方法来增强Unity内置`Vector`类的功能,以适应特定项目的需要。
关于C++中vector的两个小tips分享
解决这个问题的方法是,使用erase函数的返回值来更新迭代器,而不是使用const修饰的迭代器。
C++ vector去重保序[代码]
在实现过程中,理解erase函数的用法和返回值特性是十分重要的。
本资源来源于vector官方知识库,KB0021581-CAPL-系统变量函数-数据类型-独立函数参数
函数接收系统变量参数时,可直接使用“sysvar”关键字声明形参,该形参不指定具体数据类型,仅表示一个系统变量引用。函数内部需借助Vector提供的系统变量查询API获取其真实类型信息。


新手乐园
