2010-06-05 127 views
0

我有一個函數,我提供了一個指向std :: vector的指針。指向std的訪問元素::向量

我想使x =向量[元素],但我收到編譯器錯誤。

我做:

void Function(std::vector<int> *input) 
{ 
    int a; 
    a = *input[0]; 
} 

什麼是做到這一點的正確方法? 感謝

回答

8

應該是:

void Function(std::vector<int> *input) 
{ 
    // note: why split the initialization of a onto a new line? 
    int a = (*input)[0]; // this deferences the pointer (resulting in) 
         // a reference to a std::vector<int>), then 
         // calls operator[] on it, returning an int. 
} 

否則你有*(input[0]),這是*(input + 0),這是*input。當然,爲什麼不只是做:

void Function(std::vector<int>& input) 
{ 
    int a = input[0]; 
} 

如果你不修改input,將其標記爲const

void Function(const std::vector<int>& input) 
{ 
    int a = input[0]; 
} 
+0

好的,謝謝!我從來沒有聽說過這個 – jmasterx 2010-06-05 21:46:01

+0

感謝您的提示,我從來沒有用這種方式使用const關鍵字! – jmasterx 2010-06-05 21:52:05

+0

沒問題。我建議寫一本好書,以便你可以正確學習C++;我們在這裏有一個列表:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – GManNickG 2010-06-05 21:53:19

1

你也可以去一個一個語法糖飲食和寫a = input->operator[](0); - )