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

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

    • 1. != 与 < 有什么区别?
    • 2. 解答问题
    • 3.问题总结


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





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

你可能感兴趣的:(走进,C/C++后台开发,C++,Cpp,循环语句,C++迭代器,Cpp迭代器)