c++裡的容器有vector, list,map,pair等。最近在學習使用過程中,走了一些彎路,記錄一下。
彎路1——map插入元素
如果定義了 mapm_test; 要插入乙個元素,不能直接m_test.insert(1,1) 得 m_test.insert(pair(1,1)) 或者使用m_test.insert(make_pair(1,1)) 。
如果要使用make_pair得包含標頭檔案 #include
sort是stl提供的排序演算法,只能對float,int等常見資料型別進行排序,它支援自定義比較函式,就比較靈活了。 不過,sort不能對map排序,但是map會自動對key值從小到大進行排序。
stl排序sort詳解 這篇博文中說的比較清楚。
彎路1—— 如何自定義比較函式
c++primer中給了例子,但是沒有給出細節,特別是在類關係比較複雜的大型**中。自己在vs2000中實驗了好久,終於搞清楚了。貼乙個完整**,如下:
#include #include #include #include #include #include #include using namespace std;
namespace my_name
;class c_test
;//得定義在類外面,可以在namespace中。
bool cmp(pairm_one,pairm_two)
void c_test::sort_test()
; priority.push_back(pair(3.0,mystruct));
priority.push_back(pair(2.0,mystruct));
priority.push_back(pair(3.0,mystruct));
priority.push_back(pair(5.0,mystruct));
priority.push_back(pair(4.0,mystruct));
//for( itor = priority.begin(); itor != priority.end(); itor++ )
// cout<<"first-"<< itor->first 使用vector的sort方法,有兩種形式,一種是在類內部使用操作符過載實現,一種是在類外面寫乙個比較函式。但是sort方法無法直接傳入其它形參,在需要動態排序相對某個人的位置時,採取了間接通過靜態變數的方法。為防止併發量巨大時,靜態變數無法及時改變而產生錯誤資料,故用一迴圈去驗證等待賦值,排完序後... 使用vector的sort方法,有兩種形式,一種是在類內部使用操作符過載實現,一種是在類外面寫乙個比較函式。但是sort方法無法直接傳入其它形參,在需要動態排序相對某個人的位置時,採取了間接通過靜態變數的方法。為防止併發量巨大時,靜態變數無法及時改變而產生錯誤資料,故用一迴圈去驗證等待賦值,排完序後... 演算法學習 題目 輸入任意 使用者,成績 序列,可以獲得成績從高到低或從低到高的排列,相同成績.都按先錄入排列在前的規則處理。例示 jack 70 peter 96 tom 70 smith 67 從高到低 成績 peter 96 jack 70 tom 70 smith 67 從低到高 成績 sm...vector 排序方法sort的使用
vector 排序方法sort的使用
STL模板之vector與sort的使用