使用迭代器修改容器的内容
Modifying contents of container with iterator
我有一个向量,我正在使用迭代器修改它的内容。如果满足某个条件,我需要修改向量中下一个元素的内容。我认为以下方法会起作用:
*(it + 1)++;
这对我来说是有意义的,因为我已经能够使用条件it != vec.end() - 1
告诉循环在结束前停止一个循环。不过,它似乎对容器的内容没有任何影响,所以我决定使用以下内容:
++it;
*it += 1;
--it;
这是前一行的三行,我认为这是一个黑客。有更好的方法吗?我错过了什么技巧来增加向量中的下一个元素?
您的意思是:
(*(it + 1))++;
或++*(it + 1).
这是一个优先级问题,类似于*p++
如何增加指针,而不是指向的值。
或者,对于随机访问迭代器,您可以编写it[1]++;
或++it[1];
。
除非您需要后增量的属性,否则通常最好使用前增量。这是因为增量后按值返回,所以如果对象有一个昂贵的复制过程,但您实际上并不需要副本,那么您就浪费了制作副本的时间。
您正在创建一个指针并将其递增。取消引用迭代器,然后递增。
(*(it + 1))++;
或
*(it + 1) += 1;
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- 修改 std::vector 会使迭代器无效吗?
- 在擦除或修改作为不同索引键的值时,boost::multi_index 迭代器是否无效?
- C++ std::vector语言 - 如何修改迭代器指定的元素?
- 使用迭代器遍历向量并修改内容
- C++ 当容器在使用前被破坏/修改时发出警告(通过引用元素或迭代器使用)
- 如果我创建一个修改值的迭代器,静态成员"reference"应该是什么类型?
- std::map的迭代器,允许修改值,但不允许插入/删除
- 如何修改函数中的迭代器
- C++迭代器的未排序修改
- 使用迭代器修改容器的内容
- 使用std::vector::迭代器修改存储在std::vector中的值
- 检查/修改迭代器"constness"
- 通过迭代器修改集合中的元素
- boost-ptre如何使用迭代器修改XML
- 为什么std::set.insert()返回一个非常量迭代器,而我却无法修改它