2014-01-26 1 views
0

C++의 함수에서 읽기 전용 벡터를 전달하는 방법은 무엇입니까? 그것을 할 수C++의 함수에서 읽기 전용 벡터를 전달하는 방법은 무엇입니까?

한 가지 방법은 const를 &

const vector<string>& input 

같은 일반적인 방법이다 그러나 나는 어쩌면 궁금해서 내가 그것을 대신이 방법으로 수행해야합니다

const vector<const string&>& input 

내가 하나가되는 모르겠습니다을 보다 나은. 기본적으로 은 읽기 전용으로 벡터를 전달하고자하므로 효율적으로 수행하고 싶습니다. 및 불필요한 복사본을 피하십시오.

답변

3

참고 문헌 벡터는 C++에서는 불가능하며 전혀 저장되지 않습니다 (참조는 저장하지 않고 구현 될 수 있으므로).

게다가 가능한 경우에도 std::vector<T>std::vector<T&> 또는 std::vector<T*> (가능한 경우)로 변환 할 수 없습니다.

이제 techinally 측면에서 :이 필요가 없습니다. 실제로 더 많은 오버 헤드가 발생합니다. 벡터에 대한 참조를 전달하면 해당 데이터는 완전히 그대로 유지됩니다. 수행 된 유일한 작업은 스택상의 벡터 주소 인 PUSH입니다.

첫 번째 해결책을 찾으십시오.

관련 문제