为什么C++工程师在循环语句中使用(不等于运算符)作为条件判断而不使用(小于运算符)?

为什么C++工程师在循环语句中使用 (!=)作为条件判断而不使用 <号 ?



1. != 与 < 有什么区别?

下面是使用<的cpp(c plus plus 即 c++,cpp)代码:

int main() {

	std::vector<int> ivec(10,1);
	for (decltype(ivec.size()) i = 0; i <ivec.size() ; ++i) {
		  std::cout<<ivec[i]<<std::ends;
	}

}

下面是使用 != 的cpp代码:

int main() {

	std::vector<int> ivec(10,1);
	for (decltype(ivec.size()) i = 0; i !=ivec.size() ; ++i) {
		  std::cout<<ivec[i]<<std::ends;
	}

}

其实大家仔细会发现代码是没有任何问题的,而为什么不选择使用<运算符呢?
下面我会给大家讲解:
}

2. 解答问题

其实呢,熟悉cpp的同学都明白,cpp遍历容器,遍历数组,都会使用迭代器运算进行遍历操作(Iterator)

即:


int main() {

	std::vector<int> ivec(10,1);
	for (std::vector<int>::iterator beg=ivec.begin(),end=ivec.end(); beg!=end; ++beg) {
		  std::cout<<*beg<<std::ends;
	}
}

         一般学习c或者java的程序员转行c++时,都会觉得对for循环中使用!=而非<进行判断有点奇怪,比如上面的程序,C++程序员习惯的使用!=,其原因和他们更愿意使用迭代器而非下标的原因一样:因为这种编程风格在标准库(STL)提供的所有容器都有效。


         像string和vector等一些STL容器有下标运算符,但并非全部如此,与之类似,所有STL容器的迭代器都定义了== 和!=运算符,但他们大多的都没有定义<运算符。考虑到代码的通用性。尽可能使用!=运算符,以及使用迭代器操作容器与数组。

3.问题总结


         因为cpp中许多的STL容器都定义了迭代器与!=运算符,而绝大多数没有定义< 运算符与下标运算,考虑到编程风格的通用性(在标准库提供的所有容器都有效),只要我们养成使用迭代器与!=的习惯,就不用太在意用的是哪种容器类型。





-------------------------------------我已经到底了--------------------------------

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值