我是靠谱客的博主 激动金针菇,最近开发中收集的这篇文章主要介绍C++迭代器特性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们知道,C++中迭代器是连接容器与算法的桥梁,其效果上类似于指针。
例如,我们可以使用迭代器,来遍历容器元素,以vector为例:

	std::vector <int> c (3,0);
	std::cout << "c中元素为: " << std::endl;
	for (std::vector<int>::iterator i = c.begin (); i != c.end (); i++)
	{
		std::cout << *i << std::endl;
	}
// output
c中元素为: 
0
0
0

既然,不仅有上面的begin()函数, 且STL又提供了cbegin()函数,其实质是const iterator,说白了就是常量迭代器,即其指向的元素不可修改。

  • 看下面的例子
	std::cout << "c中元素为: " << std::endl;
	// 这是正确的循环,因为迭代器i指向的元素可修改
	for (std::vector<int>::iterator i = c.begin (); i != c.end (); i++)
	{
		*i = 2;
		std::cout << *i << std::endl;
	}


	std::cout << "c中元素为: " << std::endl;
	// 这是错误的!!!因为常量迭代器所指向元素不可修改
	for (std::vector<int>::const_iterator j = c.cbegin (); j != c.cend (); j++)
	{
		*j = 3;  // 该语句会被编译器提示表达式必须为可修改的左值
		std::cout << *j << std::endl;
	}

将上面错误语句注释

 // *j = 3;
 // output
 c中元素为:
 2
 2
 2
 c中元素为:
 2
 2
 2

总结:使用迭代器遍历容器,如果不想修改其内的元素,则用const_iterator,这样较安全、高效;否则应该用普通的iterator。

勿以善小而不为,勿以恶小而为之。
----《三国志·蜀志传》

最后

以上就是激动金针菇为你收集整理的C++迭代器特性的全部内容,希望文章能够帮你解决C++迭代器特性所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部