c++ - 我可以将迭代器递增一个整数吗?

标签 c++ dictionary iterator std stdmap

<分区>

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::setstd::multisetstd::mapstd::multimap 的迭代器> 不是随机访问迭代器。为 map 迭代器有效地支持“递增 n”操作需要在红黑树结构中进行一些额外的簿记,这会增加所有用户的开销。这是一个很少需要的操作,因此标准库不支持它。

您可以使用 std::next(m.begin(), n) 以“慢”的方式完成它。这只是将迭代器的拷贝递增 n 次并返回结果。

关于c++ - 我可以将迭代器递增一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788538/

相关文章:

c++ - 从 C++ 列表中删除项目

Python 重复集生成器

c++ - 错误 LNK1181 : cannot open input file when compiling as . LIB

c++ - 将 GMP 整数转换为以 N 为基数的整数

c++ - std::vector <std::any>返回大小

python - 从列表分区创建多个字典

c++ - boost 图 CRS : bulk weights and Dijkstra

javascript - 如何检查 Javascript Map 是否有对象键

python - 获取嵌套字典值的安全方法

c++ - 是否保证每个迭代器仅调用一次remove_if谓词?