作者StubbornLin (Victor)
看板C_and_CPP
标题Re: [问题] vector初始化的问题
时间Mon Feb 2 13:15:02 2009
※ 引述《realmojo (蟹老板)》之铭言:
: #include <vector>
: #include <iostream>
: using namespace std;
: class Bin;
: vector<Bin> *v;
: struct Bin {
: int *glass;
: Bin():glass(new int(0)) {}
: };
: int main() {
: v = new vector<Bin>(2);
: *(v->at(0).glass) = 9;
: cout << *(v->at(1).glass) << endl;
: }
: 为什麽output会是9而不是0?
我用debugger下去跑发现你的两个Bin的glass都被改成9
原因在於似乎容器只会建构(construct)一个Bin
然後剩的都用copy的方式将它填满整个阵列
因为是copy的方式 而你没有写复制的函数,它预设就是binary的方式一对一copy
导至vector里的Bin指标都是指向同一个int的位置
改写或读取当然就是都指向同一个位置 会全都一样
你可以用debugger下去跑跑看
--
哇咧咧 创意投票系统
http://walele.com
易记学 程式设计教学
http://ez2learn.com/
易记学 程式设计讨论区
http://forum.ez2learn.com
VICTOR's 个人Blog
http://blog.ez2learn.com/
财报分析王
http://victorlin.serveftp.org/stock/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.113.156.83
1F:→ realmojo:thanks! 02/02 15:49