如何修复错误:从'void'转换为请求的非标量类型'std :: vector <int>'

时间:2017-10-15 13:54:24

标签: c++ vector insert iterator g++

我收到这样的错误:

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()函数。

1 个答案:

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