今天呼叫stl的sort函式,結果一直出錯說 invalid < ,網上找了很久都沒有找到相關解答,弄了許久終於弄明白為啥。。舉個例子如下,注意下面的比較函式comparepoint,當要比較的兩個元素相等的時候,返回true:
[cpp]
class trajpoint
; bool comparepoint(trajpoint a,trajpoint b)
int main()
原來是vs2008和vs2010後都是嚴格比較,相等的兩個元素,一定要返回false,可以看到stl的原始碼:
[cpp]
template inline
bool _debug_lt_pred(_pr _pred,
_ty1& _left, _ty2& _right,
_dbfile_t _file, _dbline_t _line)
如果left和right都一樣,stl就會報錯。。所以只能修改下自己的**,當相等的時候,就返回false了。問題解決。 www.2cto.com
[cpp]
bool comparepoint(trajpoint a,trajpoint b)
呼叫STL的sort,出錯提示invalid
今天呼叫stl的sort函式,結果一直出錯說 invalid 網上找了很久都沒有找到相關解答,弄了許久終於弄明白為啥。舉個例子如下,注意下面的比較函式comparepoint,當要比較的兩個元素相等的時候,返回true class trajpoint bool comparepoint trajpo...
STL中的sort函式
b站二面時,面試官問了乙個問題,沒打出來感覺挺虧的。問題是 stl中的sort函式用的什麼排序演算法?這個問題我之前看面經的時候,看了一眼,但是當時沒有仔細研究過。大致知道裡面用了快速排序。stl的sort 演算法,資料量大時採用quick sort,分段遞迴排序。一旦分段後的資料量小於某個閾值,為...
STL中的sort演算法
上圖表明了關於sort演算法的兩大要點 sort randomacessiterator it1,randomacessiterator it1 即,sort演算法的輸入形參是兩個,而且必須都是隨機迭代器 貌似只有vector和deque滿足?sort預設的排序結果是從小到大。關於stl的sort演...