Re: [問題] vector初始化的問題
看板C_and_CPP (C/C++)作者adrianshum (Alien)時間16年前 (2009/02/03 11:04)推噓3(3推 0噓 7→)留言10則, 5人參與討論串3/3 (看更多)
※ 引述《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?
順便一提, 你這裡的用法有很多看起怪怪的地方
比如, 一般 int, double 這類東西絕少要這樣
allocate from heap.
當然, 你 new 了也沒有相對應的 delete, 沒有
正確的 copy ctor 和 assignment operator 也是
問題.
通常這類 class 會直接寫
struct Bin {
int glass;
Bin():glass(0){}
};
就夠了 (impl 其實分開寫更好)
vector 也是, 這裡也看不出有什麼需要
new vector<Bin>(2);
直接在main 裡面
vector<Bin> v(2);
不就好了? 用起來也更簡單:
v[0].glass = 9;
或 v.at(0).glass = 9;
這都比你現在的寫法易讀太多了 (也更少問題).
alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
推
02/03 11:08, , 1F
02/03 11:08, 1F
推
02/03 11:20, , 2F
02/03 11:20, 2F
→
02/03 11:21, , 3F
02/03 11:21, 3F
→
02/03 11:22, , 4F
02/03 11:22, 4F
→
02/03 11:45, , 5F
02/03 11:45, 5F
→
02/03 11:45, , 6F
02/03 11:45, 6F
推
02/03 13:46, , 7F
02/03 13:46, 7F
→
02/03 13:46, , 8F
02/03 13:46, 8F
→
02/03 13:46, , 9F
02/03 13:46, 9F
→
02/03 13:48, , 10F
02/03 13:48, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章