呼叫STL的sort,出錯提示invalid

2022-09-23 18:21:09 字數 592 閱讀 3442

今天呼叫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演...