• <small id='MVbJy'></small><noframes id='MVbJy'>

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

      <tfoot id='MVbJy'></tfoot>

        <legend id='MVbJy'><style id='MVbJy'><dir id='MVbJy'><q id='MVbJy'></q></dir></style></legend>
          <bdo id='MVbJy'></bdo><ul id='MVbJy'></ul>

      1. 假设 STL 向量存储总是连续的是否安全?

        时间:2023-09-15
          <tbody id='81Vu3'></tbody>
      2. <i id='81Vu3'><tr id='81Vu3'><dt id='81Vu3'><q id='81Vu3'><span id='81Vu3'><b id='81Vu3'><form id='81Vu3'><ins id='81Vu3'></ins><ul id='81Vu3'></ul><sub id='81Vu3'></sub></form><legend id='81Vu3'></legend><bdo id='81Vu3'><pre id='81Vu3'><center id='81Vu3'></center></pre></bdo></b><th id='81Vu3'></th></span></q></dt></tr></i><div id='81Vu3'><tfoot id='81Vu3'></tfoot><dl id='81Vu3'><fieldset id='81Vu3'></fieldset></dl></div>
            • <small id='81Vu3'></small><noframes id='81Vu3'>

              <legend id='81Vu3'><style id='81Vu3'><dir id='81Vu3'><q id='81Vu3'></q></dir></style></legend>
                <bdo id='81Vu3'></bdo><ul id='81Vu3'></ul>
                <tfoot id='81Vu3'></tfoot>

                  本文介绍了假设 STL 向量存储总是连续的是否安全?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  如果您有一个已调整大小的 STL 向量,那么获取元素 0 的地址并假设向量的其余部分将跟随在内存中是否安全?

                  If you have an STL vector which has been resized, is it safe to take the address of element 0 and assume the rest of the vector will follow in memory?

                  例如

                  vector<char> vc(100);
                  // do some stuff with vc
                  vc.resize(200);
                  char* p = &vc[0];
                  // do stuff with *p
                  

                  推荐答案

                  是的,这是一个有效的假设 (*).

                  来自 C++03 标准 (23.2.4.1):

                  From the C++03 standard (23.2.4.1):

                  存储向量的元素连续,这意味着如果 v 是向量,其中 T 是一些类型不是 bool,那么它服从身份 &v[n] == &v[0] + n for所有 0 <= n

                  The elements of a vector are stored contiguously, meaning that if v is a vector where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size().

                  (*) ...但要注意在向数组添加元素后重新分配数组(使任何指针和迭代器无效).

                  (*) ... but watch out for the array being reallocated (invalidating any pointers and iterators) after adding elements to it.

                  这篇关于假设 STL 向量存储总是连续的是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何创建向量向量的笛卡尔积? 下一篇:初始化二维 std::vector

                  相关文章

                  最新文章

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

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

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