2017-10-15 10 views
-1

내가 오류 같은 얻을 요청 :가 어떻게 오류를 수정할 수 있습니다 변환을 '벡터 <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

힌트 :'표준 : : 벡터 :: iterator'은 표준'와 동일한 유형되지 않습니다 : : 벡터 '. – user0042

답변

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