我收到这样的错误:
conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested
这是一个函数,我从这里得到了这个错误:
vector<int> concat(vector<int> vector1, vector<int> vector2)
{
return vector1.insert(vector1.end(), vector2.begin(), vector2.end());
}
我使用了算法库中的insert()函数。
答案 0 :(得分:2)
方法insert
返回迭代器。
它有以下声明
template <class InputIterator>
iterator insert(const_iterator position,
InputIterator first, InputIterator last);
功能界面在逻辑上不一致。
以下列方式声明函数
std::vector<int> & concat( std::vector<int> &vector1, const std::vector<int> &vector2 )
{
vector1.insert(vector1.end(), vector2.begin(), vector2.end());
return vector1;
}
或以下方式
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;
}