【问题标题】:how can I fix the error : conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested如何修复错误:请求从“void”转换为非标量类型“std::vector<int>”
【发布时间】:2017-10-15 13:54:23
【问题描述】:

我收到这样的错误:

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

【问题讨论】:

  • 提示:std::vector&lt;int&gt;::iteratorstd::vector&lt;int&gt; 的类型不同。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多