好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
为什么使用迭代器而不是数组索引? 关闭 返回上一级  

为什么使用迭代器而不是数组索引?
+ 查看更多

发布日期:2018-02-26 14:27
分类:CPlusPlus
浏览次数:138
采取以下两行代码:
for (int i = 0; i < some_vector.size(); i++)
{
    //do stuff
}
和这种:
for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
    some_iterator++)
{
    //do stuff
}
我被告知,第二种方式是首选。为什么是这样?

回答:

第一种形式只有在vector.size()是一个快速操作时才有效。 这对于向量是正确的,但不是列表。 另外,你打算在循环体内做什么? 如果你打算访问元素,如
T elem = some_vector[i];
那么你假定容器定义了operator [](std :: size_t)。 同样,这对于向量是正确的,但不是对于其他容器。
迭代器的使用使您更接近容器独立性。你不做有关随机存取能力或快速size()操作的假设 ,只有容器有迭代器的能力。
你可以通过使用标准算法进一步增强你的代码。 根据你想要实现的是什么,你可以选择使用std :: for_each(),std :: transform()等等。 通过使用标准算法而不是显式循环,你可以避免一切从头开始。 你的代码可能更有效(给定正确的算法),正确和可重用。
上一篇问题:C++如何提出一个HTTP请求
如何向Linux终端输出彩色文本?下一篇
下一篇如何向Linux终端输出彩色文本?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号