使用随机访问迭代器,可以通过简单地执行iter + = n然后使用container.end()而不是!= container.end()来更改跨度长度。作为循环结束条件:使用非随机访问迭代器的非单元迭代器跨度
#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
typedef std::vector<float> VectorType;
typedef VectorType::const_iterator IteratorType;
VectorType v;
for(unsigned int i = 0; i < 11; ++i)
{
v.push_back(i);
}
for(IteratorType iter = v.begin(); iter < v.end(); iter += 2)
{
std::cout << " " << *iter;
}
return 0;
}
然而两者+ = 2和< iter.end()似乎是未定义类似的std ::集。想要遍历一个只访问每个其他元素(子采样)的集合似乎是合理的,不是吗?有没有另一种方法来做到这一点?
我在iPad上,所以我无法用代码进行实验,但我只是想知道是否使用非const迭代器来试用这个代码? – 2012-02-22 00:46:04