我有一個指向類A的指針向量,我希望通過使用STL的int鍵進行排序。要做到這一點,我定義在類的operator <
一個如何使用lower_bound將值插入已排序的向量
bool operator< (const A &lhs, const A &rhs){
return (lhs.key < rhs.key);
};
,並在我的插入功能,它看起來像
vector<A*>::iterator it = lower_bound(vec.begin(), vec.end(), element);
vec.insert(it, element);
我希望lower_bound
回到第一個地方,新元素可以放置,但它確實不行。用鍵0,1,2,3插入一個對象將導致矢量的順序不正確(2,3,1,0)。這是爲什麼 ?
也許我還可以使用比較此對象:
compare function for upper_bound/lower_bound
但什麼是錯我的代碼?
使用指針的向量是像在拍攝自己並且說'至少我錯過了我的頭'。向量的要點在於避免顯式堆內存管理,但使用指針向量意味着您仍在管理堆內存。只需使用'vector '或'vector>' –
john
2013-05-06 09:18:10
@John。這是爲什麼 ?如果這是不好的做法,我可能會嘗試改變它 – rank1 2013-05-06 09:22:38
爲什麼是什麼?你的意思是爲什麼顯式堆內存管理不好?主要是因爲它很難並且有很多錯誤。 SO上有1000個和1000個帖子,問題在於有人沒有正確地執行他們的'new'和'delete'。這絕對被認爲是不好的做法。 – john 2013-05-06 09:24:15