我怎么能修复错误:转换,从“无效”非标型“的std ::矢量”要求

问题描述:

我得到一个错误这样的:我怎么能修复错误:转换,从“无效”非标型“的std ::矢量<int>”要求

conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested 

这个功能我得到这个错误from:

vector<int> concat(vector<int> vector1, vector<int> vector2) 
{ 
    return vector1.insert(vector1.end(), vector2.begin(), vector2.end()); 
} 

我使用了算法库中的insert()函数。

+1

提示:'的std ::矢量 :: iterator'是不相同的类型'STD: :矢量'。 – user0042

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