我是靠谱客的博主 敏感酒窝,最近开发中收集的这篇文章主要介绍为什么迭代器比较是否结束的时候使用!=而不是使用<,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        我们经常看到遍历容器的操作,例如遍历打印一个 vector,我们可以使用迭代器的方式,如下代码所示。

vector<int> vec = {1,2,3,4,5,6,7};
for(auto it = vec.begin();it != vec.end();++it)
{
    cout << *it << " ";
}

        那么思考一下:为什么这里要使用 it != vec.end() 而不使用 it < vec.end() 呢,使用 it < vec.end() 是否可以呢?答案是:对于 vector 容器是可以的,对于某些容器的迭代器,使用 it < vec.end() 是不行的。

        在标准库迭代器的概念和分类这篇博客讲到,迭代器分为输入迭代器,输出迭代器,前向迭代器,双向迭代器以及随机访问迭代器,vector 内部定义的迭代器类型属于随机访问迭代器,迭代器提供了 iter1 < iter2,iter1 > iter2 这样的比较迭代器相对位置的操作,但是对于前向迭代器(forward_list 容器定义的迭代器属于前向迭代器)或者双向迭代器(list,map,set 等容器定义的迭代器属于双向迭代器),并没有提供 iter1 < iter2,iter1 > iter2 这样比较迭代器相对位置的操作,所以当使用 < 的时候编译就无法通过。因此为了程序的通用性, C++ Primer 作者才建议使用 != 而不是 <,这样就不至于当你在遍历 list 容器的时候,使用 < 判断是否到达尾后迭代器时程序报错而不知所措了。

最后

以上就是敏感酒窝为你收集整理的为什么迭代器比较是否结束的时候使用!=而不是使用<的全部内容,希望文章能够帮你解决为什么迭代器比较是否结束的时候使用!=而不是使用<所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部