使用迭代器进行索引
indexing with iterators
有没有一种方法可以获得迭代器的计数?
所以如果一开始我有这个:
for (int i = 0; iter < agents.size(); ++i)
{
agents[i]->Index(i);
}
记住Index()设置了一个整数,我该如何使用迭代器呢?
for (std::vector<Agent*>::iterator iter = agents.begin(); iter < agents.end(); ++iter)
{
(*iter)->Index(????)
}
您想要distance
http://www.cplusplus.com/reference/std/iterator/distance/
(*iter)->Index(distance(agents.begin(),iter));
您可以子字符串迭代器:
int distance = iter - agents.begin();
编辑:
仅适用于随机访问迭代器。(+1个互联网到Let_Me_Be)
一般来说,你总是可以自己破解一些东西:
{
int i = 0;
for (auto it = agents.begin(), end = agents.end(); it != end; ++it, ++i)
{
(*it)->set_int(i);
}
}
如果您有随机访问迭代器,您确实可以安全地使用std::distance(agents.begin(), it)
,正如前面所说的那样。
相关文章:
- 跟随整数索引列表的自定义类迭代器
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- 在擦除或修改作为不同索引键的值时,boost::multi_index 迭代器是否无效?
- C++将向量迭代器转换为索引
- 使用索引与迭代器将向量迭代到倒数第二个元素
- 如何使equal_range迭代器在 Boost 多索引中按不同的索引排序?
- 仅在使用迭代器的某些索引上生成值
- 是否可以在C++中获得索引迭代器?
- 有没有办法创建一个花哨的迭代器和相应的新数组,以便检查每个索引的索引值的条件?
- 索引与迭代器 - 哪个更有效?
- C 迭代器比索引慢得多
- 存储Boost Multi_index索引迭代器
- 属性树常量迭代器的索引
- 矢量迭代器的索引
- 提升多索引有序迭代器分配
- 使用迭代器的矢量擦除特定索引(不基于范围或条件)
- 为什么boost多索引返回错误的迭代器
- 从迭代器获取索引处的元素
- Deque索引迭代器转换
- Boost C++ 中的索引子集迭代器