<tfoot id='oVFWV'></tfoot>
<legend id='oVFWV'><style id='oVFWV'><dir id='oVFWV'><q id='oVFWV'></q></dir></style></legend>
  • <small id='oVFWV'></small><noframes id='oVFWV'>

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

        push_back 来自同一个向量的元素是否安全?

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

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

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

              1. <legend id='CcAPU'><style id='CcAPU'><dir id='CcAPU'><q id='CcAPU'></q></dir></style></legend>

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

                1. 本文介绍了push_back 来自同一个向量的元素是否安全?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  vector<int> v;
                  v.push_back(1);
                  v.push_back(v[0]);
                  

                  如果第二次 push_back 导致重新分配,则向量中第一个整数的引用将不再有效.所以这不安全?

                  If the second push_back causes a reallocation, the reference to the first integer in the vector will no longer be valid. So this isn't safe?

                  vector<int> v;
                  v.push_back(1);
                  v.reserve(v.size() + 1);
                  v.push_back(v[0]);
                  

                  这样就安全了吗?

                  推荐答案

                  看起来像 http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526 解决了这个问题(或与它非常相似的问题)作为潜在缺陷在标准中:

                  It looks like http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526 addressed this problem (or something very similar to it) as a potential defect in the standard:

                  1) const 引用的参数可以在执行过程中改变函数的

                  1) Parameters taken by const reference can be changed during execution of the function

                  示例:

                  给定 std::vector v:

                  Given std::vector v:

                  v.insert(v.begin(), v[2]);

                  v.insert(v.begin(), v[2]);

                  v[2] 可以通过移动向量的元素来改变

                  v[2] can be changed by moving elements of vector

                  提议的解决方案是这不是缺陷:

                  The proposed resolution was that this was not a defect:

                  vector::insert(iter, value) 需要工作,因为标准不允许它不工作.

                  vector::insert(iter, value) is required to work because the standard doesn't give permission for it not to work.

                  这篇关于push_back 来自同一个向量的元素是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:从头到尾迭代C++向量 下一篇:使用 vector::iterator 或 at() 迭代 STL 向量,哪个更快

                  相关文章

                  最新文章

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

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

                2. <tfoot id='J5GFd'></tfoot>

                      <legend id='J5GFd'><style id='J5GFd'><dir id='J5GFd'><q id='J5GFd'></q></dir></style></legend>