STL size()是以恒定复杂度还是线性运行的?

Nad*_*yaz 2 c++ stl

哪个更有效,哪个更方便使用?

    std::vector<int> V(Some Integers);

    1)

    for(int i=0 ; i<V.size() ; ++i){
         std::cout<<V[i]<<" "; // print all integers
    }

    2)

    int size=V.size();
    for(int i=0 ; i<size ; ++i){
      std::cout<<V[i]<<" "; // printing all integers
    }
Run Code Online (Sandbox Code Playgroud)

ale*_*in0 5

这取决于所使用的容器和c ++标准.例如,std::set::size()in C++03可以工作在线性复杂性.至于C++14,size()所有常用的容器(至少vector,list,set,map,unordered_set,unordered_map,queuedeque)在恒定的时间运行.

  • 另外:从旁边开始,从begin()到end()的迭代更有效,并且使用for-range-loop更加惯用.另外,+1. (2认同)