有一個集合visited
。我想檢查從第4到最後的所有元素。 我試圖做這樣的事情獲得集合的第n個元素
int visited_pointer = 4;
for (set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
與operator+
了錯誤。
我該如何以正確的方式做到這一點?
有一個集合visited
。我想檢查從第4到最後的所有元素。 我試圖做這樣的事情獲得集合的第n個元素
int visited_pointer = 4;
for (set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
與operator+
了錯誤。
我該如何以正確的方式做到這一點?
operator+
的使用僅適用於隨機訪問迭代器。 set
迭代器是雙向迭代器。
但功能std::advance
可用於移動任何迭代一定數量的地方:
#include <iterator>
//...
set<int>::iterator i_visited = visited.begin();
for (std::advance(i_visited, visited_pointer)
; i_visited!=visited.end()
; ++i_visited
)
集不支持隨機訪問迭代器(即支持向迭代器添加值的那些迭代器),所以唯一的方法就是遍歷第一個(不管那可能是什麼意思)四個成員,直到你到達一個你要。對我來說,聽起來像套裝不是你正在嘗試做的任何事情的正確容器。
回覆:「不管這可能意味着」:一組是一個有序的容器,和第一個成員是一個根據該順序首先出現。 – 2011-05-01 17:20:37
@Mike True。我必須承認,我習慣於把套件看作是「小包」,沒有訂單,而套件的訂購功能僅用於保證獨特性。但那只是我。 – 2011-05-01 17:32:25