我有一個需要換一個向量迭代器,但不喜歡這個主意,從頭開始重寫。而且我無法將它繼承,只要向量迭代器似乎不是跨平臺的。至少gnu和ibm的看起來不一樣。包裝的std ::迭代器,C++
我想要做的是:
class MyContainer {
vector<double> data;
vector<int> indices;
iterator
begin()
{ return my_iterator(data, indices.begin()); }
iterator
end()
{ return my_iterator(data, indices.end()); }
}
MyContainer cont;
當指數矢量包含的數據向量中的整數位置。數據應該比索引大得多。
所以我需要一個迭代器,可以順利通過指數在任意方向上像一個正常的向量迭代器,唯一的例外的作用:當該值將要訪問它必須返回數據向量的值。例如:
for(MyContainer::iterator it = cont.begin(); it != cont.end(); it++) {
cout << *it << endl; // values of data should appear here
}
基本上它應該看起來像標準世界的正常集合。你可以在任何你想要的方向,你可以對它進行排序迭代,運行獨特,find_if等..
任何簡單的解決辦法?
如果我明白了,你真的有雙打的向量和索引向量是沒有意義的。或者,也許我錯了,我沒有清楚你真正想要達到的目標。 – birryree 2010-12-06 15:52:43
我有兩個向量。一個包含一個大數據集(10k個元素)。指數將指向數據集中的一個子集。像這樣:indices = {1,2,5,1000};我想遍歷容器,就好像我會通過索引向量一樣,但返回的值必須從數據向量中獲取。 – 2010-12-06 15:56:26