c++ algorithm中常用的几个内置函数


C++<algorithm>能用到的几个内置函数

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
void print(int &elem){	//有无&均可 
	cout << elem << " ";
}
//qsprt必须用这种格式定义比较函数,像bj定义qsort传入参数会出错
// *和(int *)是同一优先级运算符,但结合方向是从右向左
int cmp(const void *a, const void *b){ 
	return *(int *)a - *(int *)b;
}
int bj(int a, int b){ 
	return a > b;
}
int main(){
	int a[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
	
	//algorithm头文件for_each( , , )函数用法
	for_each(a, a+10, print);
	cout << endl;
	
	//快排模板函数,数组下标从0开始,即排序下标为0-9的元素
	qsort(a, 10, sizeof(a[0]), cmp);
	for_each(a, a+10, print);
	cout << endl;
	
	//algorithm中的swap函数
	char x = 'X', y = 'Y';
	swap(x, y);
	printf("x = %c, y = %c\n", x, y);
	
	char str[] = "abcdefgh";
	//algorithm中的反转函数
    reverse(str+2,str+7);	//前闭后开 
    cout << str << endl;


    int aa[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
	for_each(aa, aa+10, print);
	cout << endl;
	//qsort,sort时间复杂度都是O(n*log(n)),但实际中sort速度一般比qsort快!!
	// sort(aa, aa+10);
	//不传入第三个参数默认sort为升序排序
	sort(aa, aa+10, bj);
	//传入参数从大到小排序,且sort第三个参数不能用cmp函数
	for_each(aa, aa+10, print);
	
	
	cout << endl << max(66,88) << endl << min(66,88) << endl;
	//max和min函数
	
	
	//二路归并,头文件algorithm
	int ak[] = {1, 9, 5, 4, 7};
	int ka[] = {3, 6, 2, 8, 0};
	int kk[15];
	sort(ak, ak+5);
	sort(ka, ka+5);
	merge(ak, ak+5, ka, ka+5, &kk[1]);
	
	for_each(ak, ak+5, print);
	cout << endl;
	for_each(ka, ka+5, print);
	cout << endl;
	for_each(kk+1, kk+11, print);
	cout << endl;
	return 0;
}

★ vector的clear只是清空元素,而不回收空间,可以使用vector<int>().swap(vt)进行清空元素并回收内存。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值