• <legend id='0jati'><style id='0jati'><dir id='0jati'><q id='0jati'></q></dir></style></legend>

      <tfoot id='0jati'></tfoot>

        <i id='0jati'><tr id='0jati'><dt id='0jati'><q id='0jati'><span id='0jati'><b id='0jati'><form id='0jati'><ins id='0jati'></ins><ul id='0jati'></ul><sub id='0jati'></sub></form><legend id='0jati'></legend><bdo id='0jati'><pre id='0jati'><center id='0jati'></center></pre></bdo></b><th id='0jati'></th></span></q></dt></tr></i><div id='0jati'><tfoot id='0jati'></tfoot><dl id='0jati'><fieldset id='0jati'></fieldset></dl></div>

        <small id='0jati'></small><noframes id='0jati'>

        • <bdo id='0jati'></bdo><ul id='0jati'></ul>
      1. 使用 vector::iterator 或 at() 迭代 STL 向量,哪个更快

        时间:2023-09-16
          <tbody id='hPJ0F'></tbody>

      2. <tfoot id='hPJ0F'></tfoot>
      3. <i id='hPJ0F'><tr id='hPJ0F'><dt id='hPJ0F'><q id='hPJ0F'><span id='hPJ0F'><b id='hPJ0F'><form id='hPJ0F'><ins id='hPJ0F'></ins><ul id='hPJ0F'></ul><sub id='hPJ0F'></sub></form><legend id='hPJ0F'></legend><bdo id='hPJ0F'><pre id='hPJ0F'><center id='hPJ0F'></center></pre></bdo></b><th id='hPJ0F'></th></span></q></dt></tr></i><div id='hPJ0F'><tfoot id='hPJ0F'></tfoot><dl id='hPJ0F'><fieldset id='hPJ0F'></fieldset></dl></div>

        • <legend id='hPJ0F'><style id='hPJ0F'><dir id='hPJ0F'><q id='hPJ0F'></q></dir></style></legend>

          <small id='hPJ0F'></small><noframes id='hPJ0F'>

            <bdo id='hPJ0F'></bdo><ul id='hPJ0F'></ul>

                1. 本文介绍了使用 vector::iterator 或 at() 迭代 STL 向量,哪个更快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  在性能方面,什么会更快?有区别吗?是否依赖平台?

                  In terms of performance, what would work faster? Is there a difference? Is it platform dependent?

                  //1. Using vector<string>::iterator:
                  vector<string> vs = GetVector();
                  
                  for(vector<string>::iterator it = vs.begin(); it != vs.end(); ++it)
                  {
                     *it = "Am I faster?";
                  }
                  
                  //2. Using size_t index:
                  for(size_t i = 0; i < vs.size(); ++i)
                  {
                     //One option:
                     vs.at(i) = "Am I faster?";
                     //Another option:
                     vs[i] = "Am I faster?";
                  }
                  

                  推荐答案

                  为什么不写一个测试并找出答案?

                  Why not write a test and find out?

                  我的不好 - 我以为我正在为优化版本计时,但事实并非如此.在我的机器上,用 g++ -O2 编译,迭代器版本比 operator[] 版本稍微,但可能不是很明显.

                  My bad - I thought I was timing the optimised version but wasn't. On my machine, compiled with g++ -O2, the iterator version is slightly slower than the operator[] version, but probably not significantly so.

                  #include <vector>
                  #include <iostream>
                  #include <ctime>
                  using namespace std;
                  
                  int main() {
                      const int BIG = 20000000;
                      vector <int> v;
                      for ( int i = 0; i < BIG; i++ ) {
                          v.push_back( i );
                      }
                  
                      int now = time(0);
                      cout << "start" << endl;
                      int n = 0;
                      for(vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
                          n += *it;
                      }
                  
                      cout << time(0) - now << endl;
                      now = time(0);
                      for(size_t i = 0; i < v.size(); ++i) {
                          n += v[i];
                      }
                      cout << time(0) - now << endl;
                  
                      return n != 0;
                  }
                  

                  这篇关于使用 vector::iterator 或 at() 迭代 STL 向量,哪个更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:push_back 来自同一个向量的元素是否安全? 下一篇:C++ 转换向量<int>到向量&lt;double&gt;

                  相关文章

                  最新文章

                    <small id='20tQM'></small><noframes id='20tQM'>

                  1. <tfoot id='20tQM'></tfoot>

                    1. <i id='20tQM'><tr id='20tQM'><dt id='20tQM'><q id='20tQM'><span id='20tQM'><b id='20tQM'><form id='20tQM'><ins id='20tQM'></ins><ul id='20tQM'></ul><sub id='20tQM'></sub></form><legend id='20tQM'></legend><bdo id='20tQM'><pre id='20tQM'><center id='20tQM'></center></pre></bdo></b><th id='20tQM'></th></span></q></dt></tr></i><div id='20tQM'><tfoot id='20tQM'></tfoot><dl id='20tQM'><fieldset id='20tQM'></fieldset></dl></div>
                      <legend id='20tQM'><style id='20tQM'><dir id='20tQM'><q id='20tQM'></q></dir></style></legend>

                        <bdo id='20tQM'></bdo><ul id='20tQM'></ul>