C++ algorithm头文件函数的基本用法




algorithm
/*algorithm头文件下的常用函数*/
/*
使用algorithm头文件,需要在头文件下加一行using namespace std;” 
*/ 

//常用函数max(), min(), abs()
//swap()
//reverse()
//next_permutation()
//fill()
// sort()
//lower_bound和upper_bound()


/*max(), min(), abs()的使用*/
#include
#include
#include
using namespace std;

int main()
{
	int x =1, y =-2;
	cout < 
#include
using namespace std;

int main()
{
	int x=1, y=2, z;
	
	swap(x, y);
	cout<< x << " "<< y<
#include

using namespace std;

int main()
{
	int a[10]= {10, 11, 12, 13, 14, 15}; 
	reverse(a, a+4);//a[0]~a[3]反转
	for(int i=0; i<6; i++){
		cout<
#include
#include

using namespace std;

int main()
{
	string str = "abcdefghi";
	reverse(str.begin()+2, str.begin()+6);//对a[2]~a[5]逆转*左闭右开* 
	for( int i=0; i < str.length(); i++){
		cout<
#include
#include

using namespace std;

int main()
{
	int a[10] = {3, 2, 1};
	do{
		cout<
#include
#include

using namespace std;

int main()
{
	int a[5] = {1,2,3,4,5};
	fill( a, a+5, 233);//将a[0]~a[4]赋值3为233 
	for(int i=0;i<5;i++){
		cout<
#include
#include

using namespace std;

int main()
{
	int a[6] = {9, 4, 2, 5, 6, -1};
	//将a[0]~a[3]从小到大排序
	sort(a, a+4);
	for( int i = 0; i<6; i++){
		cout<<*(a+i)<<" ";
	} 
	cout<<" "<
#include
#include

using namespace std;


bool cmp(int a, int b)
{
	return a > b;  //可以理解为当a>b时把a放在b前面 
}

int main()
{
	int a[4] = {3, 1, 4,2};	
	sort(a,a+4,cmp);
	for(int i=0; i<4; i++){
		cout<<*(a+i)<<" ";
	}
	
	return 0;
}


/*(2)同样对char型数组*/ 
#include
#include
#include

using namespace std;


bool cmp(char a, char b)
{
	return a > b;  //可以理解为当a>b时把a放在b前面 
}

int main()
{
	char a[4] = {'a', 'b', 'c','d'};	
	sort(a,a+4,cmp);
	for(int i=0; i<4; i++){
		cout<<*(a+i)<<" ";
	}
	
	return 0;
}



/*(3)对结构体数组排序*/ 

/*定义结构体:
struct node{
	int x, y;
}ssd[10];

bool cmp(node a, node b)
{
	return a.x>b.x;//
}
*/
//示例如下:

#include
#include

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++){
	cout<< ssd[i].x <
#include

using namespace std;



int main()
{
	int a[10]={1,2,2,3,3,3,5,5,5,5};
	
	//寻找-1 
	int* lowerPos = lower_bound(a, a+10, -1);
	int* upperPos = upper_bound(a, a+10, -1);
	cout<

你可能感兴趣的:(算法学习,C++学习)