<tfoot id='qPiJz'></tfoot>
    • <bdo id='qPiJz'></bdo><ul id='qPiJz'></ul>

    1. <legend id='qPiJz'><style id='qPiJz'><dir id='qPiJz'><q id='qPiJz'></q></dir></style></legend>
    2. <small id='qPiJz'></small><noframes id='qPiJz'>

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

        从头到尾迭代C++向量

        时间:2023-09-16
          <tbody id='DQMbA'></tbody>
        <i id='DQMbA'><tr id='DQMbA'><dt id='DQMbA'><q id='DQMbA'><span id='DQMbA'><b id='DQMbA'><form id='DQMbA'><ins id='DQMbA'></ins><ul id='DQMbA'></ul><sub id='DQMbA'></sub></form><legend id='DQMbA'></legend><bdo id='DQMbA'><pre id='DQMbA'><center id='DQMbA'></center></pre></bdo></b><th id='DQMbA'></th></span></q></dt></tr></i><div id='DQMbA'><tfoot id='DQMbA'></tfoot><dl id='DQMbA'><fieldset id='DQMbA'></fieldset></dl></div>
          <tfoot id='DQMbA'></tfoot>
        • <legend id='DQMbA'><style id='DQMbA'><dir id='DQMbA'><q id='DQMbA'></q></dir></style></legend>

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

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

                1. 本文介绍了从头到尾迭代C++向量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  是否可以从尾到头迭代一个向量?

                  Is it possible to iterate a vector from the end to the beginning?

                  for (vector<my_class>::iterator i = my_vector.end();
                          i != my_vector.begin(); /* ?! */ ) {
                  }
                  

                  或者只有这样的事情才有可能:

                  Or is that only possible with something like that:

                  for (int i = my_vector.size() - 1; i >= 0; --i) {
                  }
                  

                  推荐答案

                  一种方法是:

                  for (vector<my_class>::reverse_iterator i = my_vector.rbegin(); 
                          i != my_vector.rend(); ++i ) { 
                  } 
                  

                  rbegin()/rend() 专为此目的而设计.(是的,增加 reverse_interator 会将其向后移动.)

                  rbegin()/rend() were especially designed for that purpose. (And yes, incrementing a reverse_interator moves it backward.)

                  现在,理论上,您的方法(使用 begin()/end() & --i)会起作用,std::vector 的迭代器是双向的,但请记住,end() 不是最后一个元素 - 它是最后一个元素之后的一个,因此您必须递减首先,当你到达 begin() 时你就完成了——但你仍然需要做你的处理.

                  Now, in theory, your method (using begin()/end() & --i) would work, std::vector's iterator being bidirectional, but remember, end() isn't the last element — it's one beyond the last element, so you'd have to decrement first, and you are done when you reach begin() — but you still have to do your processing.

                  vector<my_class>::iterator i = my_vector.end();
                  while (i != my_vector.begin())
                  {
                       --i;
                      /*do stuff */
                  
                  } 
                  

                  更新:在将 for() 循环重写为 while() 循环时,我显然过于激进.(重要的部分是 --i 在开头.)

                  UPDATE: I was apparently too aggressive in re-writing the for() loop into a while() loop. (The important part is that the --i is at the beginning.)

                  这篇关于从头到尾迭代C++向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:为什么可以从函数返回“向量"? 下一篇:push_back 来自同一个向量的元素是否安全?

                  相关文章

                  最新文章

                  <tfoot id='mO6vs'></tfoot>

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

                      • <bdo id='mO6vs'></bdo><ul id='mO6vs'></ul>
                    1. <legend id='mO6vs'><style id='mO6vs'><dir id='mO6vs'><q id='mO6vs'></q></dir></style></legend>