2013-05-14 2 views
3

나는 std::vector<int>에서 파생되었습니다. (나는 그것을해서는 안되지만, 나는 그것을 테스트하고 싶었습니다.) 나는 내에서 일부 작업을 수행하려는 경우유도 된 벡터 : 수행 작업

cout << v[0]; 

하지만 내가 어떻게 값 (들)에 액세스 할 수 있습니다 : 지금은 인스턴스화 어떤 값을 할당 할 수 있습니다

MyVector v(5); 
v[0]=3; 

을 나는 심지어 값을 반환 할 수 있습니다 수업? 뭔가 같은 : 질문 아래에 코멘트에 명시된 바와 같이

int func(int a){ 
    return this->[0] + a; // EXAMPLE 
} 
+1

'return (* this) [0] + a;'가 작동해야합니다. – didierc

+4

'(* this) [0]','this-> 연산자 [] (0)','this-> at (0)': 마지막 것은 경계 검사를하고 경계를 벗어나는 것을 주목하라. –

+1

@ThePhD :'operator [] (0)'과'at (0)'은'this->'없이 작동합니다. –

답변

3

:

수익률 (*이) [0] + A; 작동해야합니다. - 1 시간 전

또한, didierc vector 당신은 또한, 포인터를 통해 값을 보유과 같이 메모리에 액세스 할 수 있습니다 (배열 등) 선형 방식으로 메모리를 낳는 이후 :

int *ptr = &(*this)[0]; 
// read an integer from the console into the 3rd element of the vector 
scanf("%d", ptr + 2); 

vector의 문자가 있고 char*을 문자열 함수와 같은 것으로 전달해야하는 경우 유용 할 수 있습니다.

그러나 vector<bool>은 같은 방식으로 동작하지 않습니다 (불리언 값은 bool 배열이 아닌 비트 필드에 내부적으로 저장됩니다 (http://isocpp.org/blog/2012/11/on-vectorbool 참조).