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

posted on 2011-05-15 14:53  51Liuda  阅读(490)  评论(0编辑  收藏  举报

导航