0
我有一個函數,我提供了一個指向std :: vector的指針。指向std的訪問元素::向量
我想使x =向量[元素],但我收到編譯器錯誤。
我做:
void Function(std::vector<int> *input)
{
int a;
a = *input[0];
}
什麼是做到這一點的正確方法? 感謝
我有一個函數,我提供了一個指向std :: vector的指針。指向std的訪問元素::向量
我想使x =向量[元素],但我收到編譯器錯誤。
我做:
void Function(std::vector<int> *input)
{
int a;
a = *input[0];
}
什麼是做到這一點的正確方法? 感謝
應該是:
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];
}
你也可以去一個一個語法糖飲食和寫a = input->operator[](0)
; - )
好的,謝謝!我從來沒有聽說過這個 – jmasterx 2010-06-05 21:46:01
感謝您的提示,我從來沒有用這種方式使用const關鍵字! – jmasterx 2010-06-05 21:52:05
沒問題。我建議寫一本好書,以便你可以正確學習C++;我們在這裏有一個列表:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – GManNickG 2010-06-05 21:53:19