Adr*_*thy 19 c++ algorithm stl find
使用STL,我想找到序列中某个值的最后一个实例.
此示例将在int的向量中找到0 的第一个实例.
#include <algorithm>
#include <iterator>
#include <vector>
typedef std::vector<int> intvec;
intvec values;
// ... ints are added to values
intvec::const_iterator split = std::find(values.begin(), values.end(), 0);
Run Code Online (Sandbox Code Playgroud)
现在我可以用split
做事的子范围begin()
.. split
和split
.. end()
.我想做类似的事情,但是将split设置为0 的最后一个实例.我的第一个本能就是使用反向迭代器.
intvec::const_iterator split = std::find(values.rbegin(), values.rend(), 0);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为split
它是错误类型的迭代器.所以......
intvec::const_reverse_iterator split = std::find(values.rbegin(), values.rend(), 0);
Run Code Online (Sandbox Code Playgroud)
但现在的问题是我不能使"头"和"尾"范围像begin(), split
,split, end()
因为那些不是反向迭代器.有没有办法将反向迭代器转换为相应的前向(或随机访问)迭代器?有没有更好的方法来查找序列中元素的最后一个实例,以便我留下兼容的迭代器?
Geo*_*che 23
但现在的问题是我不能使用begin()和end()来制作"head"和"tail"范围,因为那些不是反向迭代器.
reverse_iterator::base()
是您正在寻找的 - SGIs reverse_iterator描述的新成员或cppreference.com上的新成员
归档时间: |
|
查看次数: |
13114 次 |
最近记录: |