2011-02-14 34 views
2

你好,我不知道是否有C++中的命令,我可以直接使用在鏈表跳轉到第5的節點?我知道:p->接下來,我可以嘗試去下一個節點,但是如果我想要去第56個正確的awat,那有什麼辦法呢?像p-> next(56)什麼的?由於嘗試直接在鏈表跳轉到一個節點

回答

3

如果鏈表沒有像P-> GET(56年)建,那麼你必須寫自己的功能,它使用一個for循環的命令。它需要你想要的元素的列表和編號,然後再次調用該次數。

2

有沒有這樣的「命令」。鏈表的一個特點是按位置定位特定節點的速度較慢。除非你已經存儲了一個指向該節點的指針。

如果這是一個問題,那麼一個鏈表是不是你的目的正確的數據結構。

0

C++不提供,你可以在該級別訪問鏈接列表類型。它確實有std :: list <>,它提供了封裝。你不能直接索引到一個鏈表中,雖然你可以從第一個(或其他已經找到的)元素前進56個步驟,但是每個節點都必須被遍歷並且效率相對較低。如果你需要更好的表現,你應該重新考慮你對容器的選擇:或許一個矢量或者地圖會更合適。

+0

好的,謝謝大家的答案:) – user478984 2011-02-16 06:57:14

0

這是鏈表的性質。你必須一直遍歷第n個元素。

1

至少如果您有類別InputIterator的迭代器(std::list屬於此類別的迭代器),則可以使用std::advance。例如,如果你想從列表開頭獲取迭代器指向第五元素:

std::list<int> l; 
// ... 
std::list<int>::iterator it = l.begin(); 
std::advance(it, 4); 
// Now it points to the fifth element 

但正如已經提到的其他人:不應該鏈表有隨機訪問。你總是需要通過它才能獲得某個條目。因此std::advance將執行非常差的大列表

相關問題