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);

  • 相关阅读:
    安装ActivePython
    安装Selenium
    安装setuptools与pip
    windows下测试环境搭建--Python安装
    编程语言 标记语言 脚本语言
    XMLHttpRequest 对象
    事务
    jsp
    Cookie案例-显示用户的上次访问时间代码实现
    事务处理
  • 原文地址:https://www.cnblogs.com/xloogson/p/2046885.html
Copyright © 2011-2022 走看看