競賽常用C++知識點


一、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;
}
View Code

 

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文件中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM