c++中比較好用的“黑科技”


切入正題,上黑科技

 


 

 

一、黑科技函數(常用的我就不寫了,例如sort函數)

 

1.next_permutation(a+1,a+1+n)  a[1-n]全排列

 

2.reverse(a+1,a+1+n)  將a[1-n]的數翻轉過來

 

3.*max_element(a+1,a+1+n)  找出a[1-n]數字最大值(*是因為這個函數是一個指針)

 

4.*min_element(a+1,a+1+n)  找出a[1-n]數字的最小值(*是因為這個函數是一個指針)

 

5.accumulate(a+1,a+n,0)  找出a[1-n]數字的和(0是初值)(c++11才支持)

 

6.num=unique(a+1,a+1+n)-a-1;  返回去重后數字個數,並將a數組去重

 

7.rotate(a+1,a+1+x,a+1+n)  把a數組前x數放在第n個數后面

 

8.lower_bound(a+1,a+1+n,x)-a  在a數組中下標[1-n]中找查找x的位置,返回第一個大於等於x的數字的指針-a即為下標

 

9.upper_bound(a+1,a+1+n,x)-a  在a數組中下標[1-n]中找查找x的位置,返回第一個大於x的數字的指針-a即為下標

 

10.random_shuffle(a+1,a+1+n)  隨機打亂a數組中下標[1-n]中的數(對拍神器)

 

11.vector a;  定義一個動態數組a(具體如何使用我就不說了)

 

12.clock()*1.0/CLOCKS_PER_SEC  返回程序運行時間(CLOCKS_PER_SEC在Windows環境下是1000)

 

13.memset(a,0/-1/0x7f,sizeof(a));  初始化a數組(只能是0,-1,正無窮)

 


 

 

二、黑科技宏定義

 

1.#define N 1000  把程序內N全部當成1000來用例如:a[N]=a[1000]

 

2.#define liangbei(a) a*2  (不好形容)例如:cout<<liangbei(10);    輸出:20;

 

3.#define ll long long ll即代表long long

 

4.#define pr(x) cout<<#x<<"="<<(x)<<endl;  (不好形容*2)例如:int x=1;  pr(x)  輸出:x=1

 


 

 

三、其他黑科技

 

1.O2  在編譯的時候隨你的代碼進行優化(似乎是分等級的 O1/O2/O3)

例如:int a=0  for(int i=1;i<=n;i++)  a++;  直接變成a=n;

如何在自己電腦上開O2呢?

點擊編譯器選項中寫入-O2

 

2.-W -Wall -Wextra -Wconversion   

在編譯器選項中加入這句話,會在你程序編譯時,給你提示一些你犯的一些低級錯誤(例如變量沒初始化)

 

3.-std=c++11

在編譯器選項中加入這句話,讓你在比賽時的c++更加強大!(搞清楚比賽是不是支持c++)

 


附錄:

 

1.Dev-c++軟件中的編譯器選項打開方式:

工具-->編譯選項-->第一個白框。

 


持續更新!

 


免責聲明!

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



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