1
我想編碼能夠返回的範圍迭代器以表示更大的列表的子集的方法。返回一個迭代範圍(主列表的子集)
可這樣的「子集」沒有正在取得連續的對象?
例如,如果我有n個對象一個std ::名單。
例如。
| object1 | object2 | object3 | object4 | ... | objectn
我可以返回範圍迭代器(一對開始/結束我們可以稱之爲ItBegin和ItEnd),其中將包括唯一對象1,3和4?
例如。
| object1 | object2 | object3 | object4 | ... | objectN
^ ^ ^ ^
| | | |
ItBegin ++ItBegin ++ItBegin ItEnd
那是可能的,或者我需要複製的對象(或使用指針,以避免複製)到一個新的列表,並返回該列表?
請注意,迭代器(一個或多個)子集將只可用於閱讀。 (一對常量性的會做的工作)
謝謝! Giacomo
迭代循環遵循特定的迭代順序。因此,您可以1)編寫使用特定「子集」選擇算法迭代相同集合的自定義迭代器,或者2)僅使用您需要的元素創建「子集」集合。 – vulkanino 2012-02-21 13:37:44
如果您不是'std :: list',而是擁有一個隨機訪問的容器,例如,您的方法可以返回一個索引向量。另一種選擇是對容器進行排序,以便您需要的元素被連續存儲。 – jrok 2012-02-21 13:40:59
添加我自己的評論,如果你擔心內存消耗,記住你的子集合可能只包含對象引用,而不是對象副本! – vulkanino 2012-02-21 13:43:01