美文网首页
通俗易懂讲解vector resize and reserve

通俗易懂讲解vector resize and reserve

作者: Optimization | 来源:发表于2020-06-22 13:13 被阅读0次

    vector.resize 与 vector.reserve的区别

    1.作用:

    resize的作用是:重新调整容器中已经保存的元素个数
    reserve的作用是:让容器重新分配指定大小的空间

    2.问题:

    reserve的作用:我不进行reserve或者我reserve很小的,这样的话,我还能push_back吗?可以,reserve(XXX)小于capacity不会起作用,大于的话,系统会重新分配内存。

    #define DEBUG_CPP
    #ifdef DEBUG_CPP
          std::vector<int> vNum(10, 2);
          std::cout << "vNum.capacity():" << vNum.capacity();
          vNum.reserve(2);// 太小,小于capacity是不会起作用的
          vNum.push_back(20);
          vNum.push_back(30);
          std::cout << "vNum.size():" << vNum.size()<< std::endl;
          for (int i = 0; i < vNum.size(); i++) {
              std::cout << vNum[i]<< " ";
          }
          std::cout << std::endl;
    #endif
    #undef DEBUG_CPP
    

    resize的作用:假设vector存了10个元素,我resize(8),结果是怎样的?后面2个元素被删除。我还能push_back吗?可以!!!resize只是影响之前的。

    #define DEBUG_CPP
    #ifdef DEBUG_CPP
          std::vector<int> vNum(10, 2);
          std::cout << "vNum.capacity():" << vNum.capacity();
          vNum.resize(2);
          vNum.push_back(20);
          vNum.push_back(30);
          std::cout << "vNum.size():" << vNum.size()<< std::endl;
          for (int i = 0; i < vNum.size(); i++) {
              std::cout << vNum[i]<< " ";
          }
          std::cout << std::endl;
    #endif
    #undef DEBUG_CPP
    

    2 2 20 30

    相关文章

      网友评论

          本文标题:通俗易懂讲解vector resize and reserve

          本文链接:https://www.haomeiwen.com/subject/tmsxfktx.html