<legend id='CFr3R'><style id='CFr3R'><dir id='CFr3R'><q id='CFr3R'></q></dir></style></legend>
  • <tfoot id='CFr3R'></tfoot>

    1. <small id='CFr3R'></small><noframes id='CFr3R'>

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

      1. “对"释放 std::vector 对象的方法

        时间:2023-09-15

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

          <tfoot id='hmGxD'></tfoot>
            <tbody id='hmGxD'></tbody>

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

                  本文介绍了“对"释放 std::vector 对象的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  第一个解决方案是:

                  std::vector<int> *vec = new std::vector<int>;
                  assert(vec != NULL);
                  // ...
                  delete vec;
                  

                  替代方案是:

                  std::vector<int> v;
                  //...
                  vec.clear();
                  vec.swap(std::vector<int>(vec));
                  

                  第二个解决方案有点诡计——什么是正确的"?怎么做?

                  The second solution's a bit of a trick --- what's the "right" way to do it?

                  我知道析构函数一旦离开堆栈就会被调用,我对其他方法很好奇.

                  I'm aware that the destructor will be called once it's off the stack, I was curious about other methods.

                  推荐答案

                  释放向量的最简单、最可靠的方法是在堆栈上声明它,然后什么都不做.

                  The simplest and most reliable way to deallocate a vector is to declare it on the stack and simply do nothing.

                  void Foo() {
                    std::vector<int> v;
                    ...
                  }
                  

                  C++ 保证在方法执行时会调用v 的析构函数.std::vector 的析构函数将确保它分配的任何内存都被释放.只要 vectorT 类型具有适当的 C++ 释放语义,一切都会好起来的.

                  C++ guarantees that the destructor of v will be called when the method executes. The destructor of std::vector will ensure any memory it allocated is freed. As long as the T type of the vector<T> has proper C++ deallocation semantics all will be well.

                  这篇关于“对"释放 std::vector 对象的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何将 std::string 复制到 std::vector<char> 中? 下一篇:对结构向量进行排序

                  相关文章

                  最新文章

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

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

                      <tfoot id='qClZW'></tfoot>