как я могу исправить ошибку: преобразование из 'void в нескалярный тип' std :: vector <int> запрошенный
1 shirazy [2017-10-15 16:54:00]
Я получаю ошибку:
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() из библиотеки алгоритмов.
c++ iterator insert vector g++
1 ответ
2 Решение Vlad from Moscow [2017-10-15 17:00:00]
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;
}