Mih*_*yan 45 c++ iterator list
假设我有一个std::list<int> lst和一些std::list<int>::iterator it迭代列表.并依赖于it我想要使用的值it + 1或it - 1在我的代码中.有没有一些好方法可以做到这一点next(),prev()(我在stl文档中找不到这样的东西)?或者我应该复制it每次并增加(减少)副本?
inf*_*inf 47
是的,因为C++ 11有你正在寻找所谓的两种方法std::prev和std::next.您可以在迭代器库中找到它们.
来自cppreference.com的示例
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::list<int> v{ 3, 1, 4 };
auto it = v.begin();
auto nx = std::next(it, 2);
std::cout << *it << ' ' << *nx << '\n';
}
Run Code Online (Sandbox Code Playgroud)
输出:
3 4
Run Code Online (Sandbox Code Playgroud)
jal*_*alf 20
复制和递增/递减副本是唯一可以完成的方法.
你可以编写包装器函数来隐藏它(正如答案中提到的,C++ 11有std :: prev/std :: next,它就是这样做的(而Boost定义了类似的函数).但是它们是这个"副本"的包装器.增加"操作,所以你不必担心你做错了".
一个简单的预先解决方案来自prior和.他们利用和,但不要求你创建一个临时的.nextBoost.utilityoperator--operator++
| 归档时间: |
|
| 查看次数: |
35434 次 |
| 最近记录: |