algorithm標頭檔案下的常用函式
algorithm標頭檔案下的常用函式
- max(x,y),min(x,y),abs(x)返回整數的絕對值
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int x = 1, y = -2;
printf("%d %d\n", max(x, y), min(x, y));
printf("%d %d\n", abs(x), abs(y));
system("pause");
return 0;
}
- reverse(it,it2)將陣列指標在[it,it2)之間的元素或容器的迭代器在[it,it2)範圍內的元素進行反轉。
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[10] = { 10, 11, 12, 13, 14, 15 };
reverse(a, a + 4);
for (int i = 0; i < 6; i++)
printf("%d ", a[i]);
system("pause");
return 0;
}
- next_permutaion(a,a+3),給出一個序列在全排列中的下一個序列
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[10] = { 1, 2, 3 };
//a[0]~a[2]之間的序列需要求解next_permutation
do{
printf("%d%d%d\n", a[0], a[1], a[2]);
} while (next_permutation(a, a + 3));
system("pause");
return 0;
}
輸出結果:
123
132
213
231
312
321
- file(a,a+4,233),把陣列或容器中的某一段區間賦為某個相同的值。
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
fill(a, a + 5, 233);
for (int i = 0; i < 5; i++)
printf("%d ", a[i]);
system("pause");
return 0;
}
5.sort(a,a+4),預設按從小到大的順序排序
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[5] = { 3, 1, 4, 2 };
sort(a, a + 4);
for (int i = 0; i < 4; i++)
printf("%d ", a[i]);
system("pause");
return 0;
}
如果想要從大到小來排序,則要使用比較函式cmp來告訴sort何時要交換元素
char型陣列從大到小排列:
#include <stdio.h>
#include <algorithm>
using namespace std;
bool cmp(char a, char b)
{
return a > b;//> 左大右小
}
int main()
{
char c[] = { 'T', 'W', 'A', 'K' };
sort(c, c + 4, cmp);
for (int i = 0; i < 4; i++)
printf("%c", c[i]);
system("pause");
return 0;
}
輸出結果:
WTKA
結構體陣列的排序:
#include <stdio.h>
#include <algorithm>
using namespace std;
struct node{
int x, y;
}ssd[10];
bool cmp(node a, node b){
return a.x > b.x;//按x值從大到小對結構體陣列排序
}
int main()
{
ssd[0].x = 2;
ssd[0].y = 2;
ssd[1].x = 1;
ssd[1].y = 3;
ssd[2].x = 3;
ssd[2].y = 1;
sort(ssd, ssd + 3, cmp);
for (int i = 0; i < 3; i++)
printf("%d %d\n", ssd[i].x, ssd[i].y);
system("pause");
return 0;
}
輸出結果:
3 1
2 2
1 3
而如果想先按x從小到大排序,但當x相等的情況下,按照y的大小從小到大來排序(即進行二級排序),那麼cmp的寫法是:
bool cmp(node a, node b){
if (a.x != b.y) return a.x > b.x;
else return a.y < b.y;
}
容器的排序:
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b){
return a > b;
}
int main()
{
vector<int> vi;
vi.push_back(3);
vi.push_back(1);
vi.push_back(2);
sort(vi.begin(), vi.end(), cmp);//對整個vector進行排序
for (int i = 0; i < 3; i++)
printf("%d ", vi[i]);
system("pause");
return 0;
}
string的排序:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str[3] = { "bbbb", "cc", "aaa" };
sort(str, str + 3);
for (int i = 0; i < 3; i++)
cout << str[i] << endl;
system("pause");
return 0;
}
輸出結果:
aaa
bbbb
cc
相關文章
- C++標頭檔案<algorithm>中常用函式簡介C++Go函式
- Nt函式原型標頭檔案函式原型
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- string.h標頭檔案(字串函式)字串函式
- 8.13 標頭檔案剖析:標頭檔案路徑(下)
- 標頭檔案包含方式,main函式的引數解析AI函式
- C++ 字元處理函式(cctype標頭檔案)C++字元函式
- C++ 字串 cctype 標頭檔案標準庫處理函式C++字串函式
- C語言rewind()函式:將檔案指標重新指向檔案開頭C語言函式指標
- 字串 reverse(str.begin(),str.end()) 函式的標頭檔案 以及 str.clear()函式字串函式
- 附錄: 標準C++常用標頭檔案及描述C++
- asp 中常用的檔案處理函式函式
- linux下使用windows標頭檔案LinuxWindows
- lr中常用函式以str開頭函式函式
- C 標頭檔案
- linux和STL 常用標頭檔案及說明Linux
- 介紹下extern和標頭檔案的聯絡
- 標頭檔案的作用分析
- C++ 數學函式、標頭檔案及布林型別詳解C++函式型別
- C++基礎::函式、類、型別所在的標頭檔案 && 介面的介紹C++函式型別
- #include sys/xxx.h標頭檔案 UNIX標頭檔案
- locate標頭檔案和庫檔案
- 02@在類的標頭檔案中儘量少引入其他標頭檔案
- C 標頭檔案 作用
- 祖傳標頭檔案
- 標準IO常用函式介面函式
- fcntl.h標頭檔案
- linux 標頭檔案 作用Linux
- 什麼是 標頭檔案
- 關於C++的標頭檔案C++
- c++中模板類的成員函式的宣告與定義應該放在標頭檔案裡C++函式
- 函式指標、回撥函式、動態記憶體分配、檔案操作函式指標記憶體
- IDEA下JNI開發快速生成標頭檔案方法Idea
- ES6 箭頭函式下的this指向函式
- C/C++標頭檔案太難記?一個萬能標頭檔案全搞定!C++
- C語言標頭檔案#include的作用C語言
- pch檔案的使用, 標頭檔案使用, 常量(const)的定義,以及一些常用的巨集定義
- c++筆記_標頭檔案C++筆記