1.1.1排序效能問題
c語言的函式qsort,c++中的sort(直接傳入排序函式)以及傳入functor物件的sort函式**以及時間。
#includeusing namespace std;
#define _for(i,a,b) for( int i=(a); i
const int n = 10000000;
struct ts;
inline bool cmp (const ts&t1, const ts&t2)
struct cmpfunctor
};ts tss[n];
void gendata()
}int main()
兩次編譯結果(-o2優化):
1.1.4 stl容器的輸出
使用io流對容器的內容進行輸出。
#includeusing namespace std;
#define _for(i,a,b) for(int i=(a); i<=(b); i++)
templateostream& operator<
int main()
;ts tss[n];
void gendata()
}int main()
); printf("sort by funtion pointer : %ld\n",clock() - start);
return 0;
}
1.2.6 雜湊容器
c++11引用了幾個基於hash演算法的容器: unordered_map、unordered_set、unordered_multimap、unordered_multiset。
當不需要排序時,這些容器的查詢效能更好。預設的hash容器提供了內建資料型別的hash演算法,但是自定義型別需要提供自定義
的hash演算法:自定義型別包含幾種內建型別時,分別算出其hash,進行組合後得到乙個新的hash值,一般採用移位+異或。容器
處理碰撞時需要判斷兩物件是否相等,所以需要過載"=="操作符。
#includeusing namespace std;
struct type
};struct hashfunc
};int main()
, "one"},
, "two"},
, "three"}
};for(const auto& k : testhash)
{cout<
演算法競賽入門經典習題解答(1)
1 1求平均數 include int main 1 2溫度 include int main 1 3連續和 include int main 1 4正弦和余弦 include include int main 1 5求兩點之間的距離 include include int main 1 6判斷乙個...
演算法競賽入門經典習題2 6
用1,2,3,9組成3個三位數abc,def和ghi,每個數字恰好使用一次,要 求abc def ghi 1 2 3。按照 abc def ghi 的格式輸出所有解,每行乙個解 思路 如果首先要保證每個數字都用一次,那麼這個題就會變得很麻煩,所以就先讓abc,def,ghi產生倍數關係然後對 這三個...
演算法競賽入門經典 習題3 7
uva1368 dna consensus string 本來以為題目是要在已有序列中找乙個最小的序列,後來仔細讀了下題才發現是要構造乙個距離最小的序列。感覺這道題應該就是貪心演算法吧?每一位和已有序列的對應位差得越少,總體也就越少。include include include include u...