2011-04-23 91 views
1

可能重複:
How to get a certain element in a list, given the position?C++名單隨機存取

所以在Python中,你可以在隨機訪問方式列表獲取元素....

list = [1,12,3] 

print(list[1]) 

它打印12 ....

你可以用C++ list做同樣的事嗎?沿着http://www.cplusplus.com/reference/stl/list/list/

+0

你在談論數組或鏈表嗎?請注意,對於鏈接列表,「O(1)」隨機訪問是不可能的。在鏈表上隨機訪問的最好方法是'O(n)'。 – 2011-04-23 22:37:11

+0

是啊,你能更詳細地說明你的意思嗎? – cost 2011-04-23 22:38:11

+1

誰說Python列表是C++列表? – GManNickG 2011-04-23 22:42:09

回答

9

在C++中,最近你想會是一個矢量什麼:

我談論這個

std::vector<int> v; 
v.push_back(1); 
v.push_back(12); 
v.push_back(3); 
std::cout << v[1] << std::endl; // prints 12 

您可以使用提供遍歷向量的迭代,太。但是,一旦你修改了矢量(插入或刪除),它就無效了。

實際提供的List類(它是一個雙向鏈表)不提供這種功能。

+0

是的,就實現而言C++向量與Python列表最爲相似。 – 2011-04-23 22:38:06

+0

這個答案很好,但如果通常的用法就像一個列表,但是隨機訪問,我實際上會推薦'std :: deque'。 – 2011-04-23 22:55:42

1

如果我理解你的問題吧,你問陣列

INT表[3(大小)] = {1,12,3};

cout < < list [1];

0

如果您正在討論C++ STL列表,不,那是列表的主要問題。

1

沒有。如果使用std :: list,則必須迭代列表以查找特定元素,因爲列表是雙鏈表,所以不能使用隨機訪問運算符訪問元素。 這是因爲對於列表來說,在列表中的任意位置插入或刪除都是快速而有效的,因此在修改列表之後,開始時的第一個元素是第三個元素。