作者tropical72 (藍影)
看板C_and_CPP
標題[問題] vector 問題 (2d,比較運算子)
時間Tue Dec 14 03:59:57 2010
補充說明(Supplement):
之前全都用 new, malloc, vector 只有用 1dim,
回來翻 primer 4e, 發現有幾個問題想問
(1) 3.3.2 節-表3.5,vector 竟然有提供
==, !=, <, <=, >, >= 運算子
比較時是怎麼判斷??
(2) 實做 2D vector 時有點卡住
#define X 2
#define Y 3
vector<int>::size_type x, y;
// 2 dim - 1
vector <int> *a2 = new vector<int>[X];
for(x=0; x<X; x++) a2[x].reserve(Y);
// 2 dim - 2
vector <vector<int>> a3(X, vector<int>(Y));
爬過文後,目前我只會配到這裡而已,
只是在這裡,二維以上我完全感受不到使用 vector 的好處
這種方式和 new, malloc 似乎沒什麼二樣,也是事先配置好空間
到時重新配置空間還先 free 掉 -> 麻煩。
調用方法都用下標方式調用,
這樣 push_back, resize 該怎麼動手?
謝謝各位不吝指教。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
推 LPH66:(1) 應該是字典順序... 12/14 04:09
可能我沒辦法理解作者的意思,
表中是 vector 常用的操作
表裡提到 vector 也提供比較運算子
我好奇的是
vector<int> a, b;
cout << (a>b) << endl; // 一定要括號起來
至於您說是字典順序, 是類似這樣嗎:
for(i=0; i<a.size(); i++){
if(a[i] > b[i]) { // a>b
cout << "1" << endl;
break;
}
if(a[i] < b[i]) { // a<b
cout << "-1" << endl;
break;
}
}
if(i==a.size() && a.size()==b.size()) // a==b
cout << "0" << endl;
else
cout << "-1"; // b.size > a.size, b>a
無論如何,先謝謝 LPH66 的協助。
※ 編輯: tropical72 來自: 180.177.76.142 (12/14 04:41)
推 chrisdar:a[i]-b[i] 12/14 07:07