<分区>
std::map<int, int> m;
// initialize m...
//
int n=3;
for (std::map<int, int>::iterator iter = m.begin()+n; iter != m.end(); ++iter)
// Is the above line correct?
{}
我能否像代码中所示那样将迭代器递增一个整数?
<分区>
std::map<int, int> m;
// initialize m...
//
int n=3;
for (std::map<int, int>::iterator iter = m.begin()+n; iter != m.end(); ++iter)
// Is the above line correct?
{}
我能否像代码中所示那样将迭代器递增一个整数?
最佳答案
只有当迭代器是随机访问迭代器时,您才能对它进行“指针运算”。 std::set
、std::multiset
、std::map
和 std::multimap
的迭代器> 不是随机访问迭代器。为 map 迭代器有效地支持“递增 n
”操作需要在红黑树结构中进行一些额外的簿记,这会增加所有用户的开销。这是一个很少需要的操作,因此标准库不支持它。
您可以使用 std::next(m.begin(), n)
以“慢”的方式完成它。这只是将迭代器的拷贝递增 n
次并返回结果。
关于c++ - 我可以将迭代器递增一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788538/