我有一个需要换一个向量迭代器,但不喜欢这个主意,从头开始重写。而且我无法将它继承,只要向量迭代器似乎不是跨平台的。至少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