概述
我们知道,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++迭代器特性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复