zoukankan      html  css  js  c++  java
  • 【STL系列】都是vector惹的祸,不要存储vector里面的指针。

    看如下代码

    1 enum
    2
    3 {
    4
    5   Red = 1,
    6
    7   Green = 2
    8
    9 }
    10
    11 struct Apple
    12
    13 {
    14
    15   int iType;
    16
    17   int iWight;
    18
    19 };
    20
    21 int main()
    22
    23 {
    24
    25   vector<Apple> objApple;
    26
    27   vector<Apple*>pApple;
    28
    29   Apple obj1;
    30
    31   obj1.iType=Red ;
    32
    33   obj1.iWight = 10;
    34
    35   objApple.push_back(obj1);
    36
    37   pApple.push_back(&objApple.back());
    38
    39   objApple.iType = Green ;
    40
    41   objApple.iWight = 11;
    42
    43 objApple.push_back(obj1);
    44
    45   pApple.push_back(&objApple.back());
    46
    47   return 0;
    48
    49 }

    恩,以上代码有错误吗?

    总结,不要轻易保存vector里面的指针,它会自增长的噢,你不知道它的分配机制的。

    解决的办法就是,你首先为vector预分配空间,恩,聪明的vector早已经为了准备好了函数

    objApple.reserve(10);

  • 相关阅读:
    常用Git代码托管服务分享
    .NET中操作IPicture、IPictureDisp
    Git学习笔记与IntelliJ IDEA整合
    螺旋队列问题
    杂题3道
    .NET 配置文件简单使用
    C++之Effective STL
    不容易理解的 lock 和 merge
    状态模式
    观察者模式
  • 原文地址:https://www.cnblogs.com/xloogson/p/2046885.html
Copyright © 2011-2022 走看看