[英]how can I fix the error : conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested
I get a error like this : 我收到这样的错误:
conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested
and this a function I get this error from: 这是我从以下函数得到此错误的函数:
vector<int> concat(vector<int> vector1, vector<int> vector2)
{
return vector1.insert(vector1.end(), vector2.begin(), vector2.end());
}
I used the insert() function from algorithm library. 我使用了算法库中的insert()函数。
The method insert
returns iterator. 方法insert
返回迭代器。
It has the following declaration 它具有以下声明
template <class InputIterator>
iterator insert(const_iterator position,
InputIterator first, InputIterator last);
The function interface is not logically consistent. 功能接口在逻辑上不一致。
Either declare the function the following way 可以通过以下方式声明函数
std::vector<int> & concat( std::vector<int> &vector1, const std::vector<int> &vector2 )
{
vector1.insert(vector1.end(), vector2.begin(), vector2.end());
return vector1;
}
or the following way 或以下方式
std::vector<int> concat( const std::vector<int> &vector1, const std::vector<int> &vector2 )
{
std::vector<int> result( vector1 );
result.insert(result.end(), vector2.begin(), vector2.end());
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.