2016-11-14 1 views
0

값으로 두 벡터를 전달하고 그 중 일부 계산을 수행하고 싶습니다. 나는 왜 다음과 같은 것이 효과가 없는지 혼란 스럽다. 나는 그 순간에 내가 변경할 필요가 없습니다 것을 깨달았다까지 나는 또한 Matrix_t & 대신 const를 Matrix_t이 먼저 수행하려고 않은 지금 시간 -.-값/참조로 벡터를 전달하고 이터레이터를 가져옵니다.

typedef std::vector<std::vector<int> > Matrix_t; 
... 
void vector_product(const Matrix_t mc, const Matrix_t mp, Matrix_t& r){ 
    std::vector<int> _mc(5); 
    std::vector<int> _mp(5); 
    _mc.insert(_mc.begin(), mc.begin(), mc.end()); 
    _mp.insert(_mp.begin(), mp.begin(), mp.end()); 
} 

을이 알아 내려고 노력하고있어 그것들은 함수 안에 있고 값으로 전달하는 것도 괜찮습니다. 그러나 그것도 작동하지 않았습니다.

컴파일러는 변환 오류에 대한 텍스트의 벽을 인쇄합니다. 그게 내가 여기에 그것을 복사하지 않을 이유입니다.

+0

'const' 매개 변수를 변경할 수 없습니까? –

+1

그건 그렇지 않아. 당신은'vector '타입의 요소를'int' 요소를 가진 벡터로 복사하려고 시도하고 있습니다. –

+0

omg-.- 당신은 완전히 옳았습니다, 나는 방금 인덱스를 추가했고 모든 것이 잘 작동합니다. 정말 고마워요 !!! 나는 완전히 이것을 감독했다 ... –

답변

2

반복기에서 반환 된 로컬 벡터와 벡터는 서로 다른 value_type을가집니다.

반복자는 벡터를 반환하지만 로컬 벡터의 요소는 스칼라 정수입니다.

이러한 로컬 벡터의 값 유형은 무엇입니까? 반복자에 의해 리턴 된 객체의 값 타입 std::vector<int> 동안

std::vector<int> _mc(5); 
std::vector<int> _mp(5); 

같이 정의하면 int이다. 당신이

std::vector<std::vector<int>> _mc(5); 
std::vector<std::vector<int>> _mp(5); 

같은 로컬 벡터를 선언 할 경우

다음 코드는 유효 할 것이다.

관련 문제