使用stl中的 advance和 distance 方法来进行iterator的加减
来源:互联网 发布:中国航天发动机 知乎 编辑:程序博客网 时间:2024/05/21 17:33
使用stl中的 advance和 distance 方法来进行iterator的加减
以前在遍历vector的时候,经常使用iterator之间的加减来获得元素在容器里面的index。
今天在进行list的 iterator加减的时候,发现不能编译通过,后面想起list是非线性的容器,不能加减。
查了一下资料,发现stl有提供两个iterator加减的方法:advance 和 distance
advance是 将iterator移动,而distance是计算两个iterator直接的距离。
template<typename _InputIterator>
inline typenameiterator_traits<_InputIterator>::difference_type
distance(_InputIterator __first, _InputIterator __last)
{
// concept requirements -- taken care of in __distance
return std::__distance(__first, __last,
std::__iterator_category(__first));
}
第一个参数first,第二个参数last
返回的是基于 first + n = last ,中的 n
也就是基于,last 是由first经过n可以到达的,注意n可能为负的。
我第一次使用这个就是将两个参数顺序弄反了,结果返回负的n,而我这个是对应一个数字的Index下标,结果导致找不到对应的index的元素。
例子代码如下:
std::vector<STableInfor>::iterator iter_begin = m_tableInfoList.begin(); std::vector<STableInfor>::iterator iter_end = m_tableInfoList.end(); int index = distance(iter_begin,iter_end);
- 使用stl中的 advance和 distance 方法来进行iterator的加减
- 使用stl中的 advance和 distance 方法来进行iterator的加减 http://blog.csdn.net/tangaowen/article/details/7515558
- effective stl 第27条:使用distance和advance将容器的const_iterator转换为iterator
- stl的advance和distance的用法
- STL示例10(advance及distance使用)
- 使用迭代器辅助函数advance,distance,iter_swap
- stl 学习笔记13 advance()distance() iter_swap()
- STL iterator迭代器的使用
- LeetCode 284. Peeking Iterator--实现Iterator接口的hashNext和next方法,来实现peek方法
- 【STL】:使用栈来进行符号匹配的判断
- STL中的iterator adapter
- STL中的Iterator
- C++ Vector 与STL Iterator的使用
- 使用Aspect中的annotation标签的方法来截获所有的Exception,进行控制台打印
- 个人对List接口中的iterator方法的使用了解
- 直接使用泛型类中的方法来进行分页
- STL中的nth_element()方法的使用
- STL中的nth_element()方法的使用
- js 实现拖动效果 __按回车键,方块还能做自由落体运动。
- 基于vertical-align的表单元素垂直对齐方式研究 By 小强 @ 2009年10月27日 [ 前端表现 ]
- 导师的反思
- cmd下ipconfig等常用命令不能用?
- c语言中的各种变量是如何存储的(-)
- 使用stl中的 advance和 distance 方法来进行iterator的加减
- Repeater嵌套绑定Repeater
- opencv使用cvWriteFrame,在系统中包含DIVX编码器的前提下
- QImage 和 IplImage 之间转换问题
- vs2010快捷键
- rsync远程同步备份数据(ssh方式)
- 使用PDB调试python程序
- 11级_Java_曹建波4.26 集及其实现类&枚举器与数据操作
- 坑爹的cmd