一、STL
1、sort() 排序
對數組排序:
(1)結構體運算符重載 <
(2)函數名作參數
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct Node{ int x; char ch; }; Node ns[100]; bool cmp1(Node a,Node b){ return a.x >= b.x; // 降序 } bool cmp2(const Node & a, const Node & b){ //如果用引用,需要加const return a.x <= b.x; //升序 } int main(){ int n; cout << "請輸入節點個數:"; cin >> n; cout << "請輸入" << n << "個節點和字符,如:1 a" << endl; for(int i=0;i<n;++i){ cin >> ns[i].x; cin >> ns[i].ch; } sort(ns, ns+n, cmp2); cout << "排序之后結果如下:" << endl; for(int i=0;i<n;++i){ cout << ns[i].x << "\t" << ns[i].ch << endl; } return 0; }
傳入迭代器做參數
vector<int> a; sort(a.begin(), a.end());
2、輸出全排列
#include<iostream> #include<algorithm> using namespace std; int main(){ int a[4] = {1, 2, 3, 4}; // 必須升序 do{ for(int i=0;i<4;++i){ cout << a[i] << " "; } cout << endl; }while(next_permutation(a, a+4)); return 0; }
3、vector
4、map
5、list
6、queue
7、stack
二、技巧
8、測試程序使用時間
#include<ctime>
#include<cstdio> int main() { int start = clock(); //DO SOMETHING printf("%.3lf\n",double(clock()-start)/CLOCKS_PER_SEC); }
9、提高cin 讀取速度
std::ios::sync_with_stdio(false);
/* 我們可以在IO之前將stdio解除綁定,這樣做了之后要注意不要同時混用cout和printf之類。 在默認的情況下cin綁定的是cout,每次執行 << 操作符的時候都要調用flush,這樣會增加IO負擔。可以通過tie(0)(0表示NULL)來解除cin與cout的綁定,進一步加快執行效率。 */ #include <iostream> int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); // IO }
10、輸入輸出重定向(提交時候注意注釋掉重定向語句)
freopen("./in.txt","r",stdin); //輸入重定向,輸入數據將從in.txt文件中讀取 freopen("./out.txt","w",stdout); //輸出重定向,輸出數據將保存在out.txt文件中
