容器迭代(c ++)

时间:2014-09-26 15:17:17

标签: c++ arrays stl iterator containers

我的问题可以分为两部分:

  1. 使用较短的整数变量(例如short或unsigned char)来循环遍历数组(或stl容器)索引是否有任何优势;和
  2. 使用带有stl容器的迭代器有什么好处(如果有的话)。
  3. 问题1的代码示例:

    const size_t a=100000000;
    const unsigned char b=5;
    float array[a][b];
    
    for (size_t j=0; j<a; ++j)
      for (unsigned char i=0; i<b; ++i)
        std::cout << array[j][i] << std::endl;
    

    i循环中使用unsigned char是否可以保存任何东西? array[j][i]隐式将i投射到size_t吗?

    问题2的代码示例:

    vector<float> a(1000,0.);
    vector<float> b(a);
    
    for (size_t i=0; i<a.size(); ++i)
      cout << a[i] << endl;
    
    for (vector<float>::iterator it=b.begin(); it!=b.end(); ++it)
      cout << *it << endl;
    

    使用迭代器方法有优势吗?如果不是这种情况,那么什么时候?为什么?

    奖金问题: 在for (size_t i=0; i<a.size(); ++i)中,每次都会重新评估a.size()吗?首先获得尺寸,我能赢得任何东西吗?

    const size_t size = a.size();
    for (size_t i=0; i<size; ++i)
    

    std::vector在调用vector::size()时是否只返回成员变量的值,还是做了更精细的事情?

0 个答案:

没有答案