爲了獲得列表中的下一個元素,只需要增加迭代器。然而,從列表中的任何元素,有沒有辦法直接到列表的頭部?例如,如果迭代器指向列表的第三個元素,除了反向迭代外,還有一種方法可以到達列表的前面嗎?從任意位置訪問頭部STL列表
感謝
爲了獲得列表中的下一個元素,只需要增加迭代器。然而,從列表中的任何元素,有沒有辦法直接到列表的頭部?例如,如果迭代器指向列表的第三個元素,除了反向迭代外,還有一種方法可以到達列表的前面嗎?從任意位置訪問頭部STL列表
感謝
沒有,因爲std::list
旨在模擬一個雙向鏈表(而且通常作爲一個實現),並在雙向鏈表,每個元素只指向一個和下一個元素列表。
不,你甚至不能僅僅基於一個迭代器來做它:你無法知道迭代器是否有效,以及你是否允許遞增或遞減它!
你可以做到這一點的唯一方法是通過比較你的迭代器(推測有效)到x.begin()
和x.end()
,但是一旦你有了這些,你已經有了迭代器到列表頭,問題就變得沒有意義了。
迭代器應該總是被認爲是成對出現的[first, last)
,並且容器與它們的begin()/end()
成員函數提供了這樣一對。