1.min abs(x),fabs(y)
其中x必须是整型,y是浮点型 b
#include <algorithm>
2.动态创建new malloc
int *p1=new int[10];
bool *p2=new bool[10][];
int* p=(int*)malloc(sizeof(int));
free对应malloc,delete对应new
free(p);
delete(p1);
3.二叉树建立
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
using namespace std;
typedef struct treenode
{
char data;
struct treenode* leftchild;
struct treenode* rightchild;
}* Bitree,BitNode;
Bitree createTree()
{
char c;
cin >> c;
Bitree node;
if (c == '#')
node = NULL;
else
{
node = (Bitree)malloc(sizeof(BitNode));
node->data = c;
cout << c;
node->leftchild = createTree();
}
return node;
}
int main()
{
Bitree T;//指向根节点指针
T = createTree();
}
4. 逆转函数
#include <algorithm>
string str;
reverse(str.begin(),str.end());
5. 结构体排序函数
5.1 结构体定义
struct node
{
int a;
int b;
//用于不初始化定义
node() {};
//用以提供a,b的初始化
node(int x, int y) :a(x), b(y) {};
}save,dd[10];
5.2 结构体赋值(调用构造函数)
node save2;
int num = 0;
for (int i = 0; i < 7; i++)
{
dd[num++] = node(i, i+2);
}
for (int i = 0; i < 7; i++)
{
cout << dd[i].a << " " << dd[i].b << endl;
}
5.3 结构体加sort函数排序
#pragma warning(disable:4996)
/*
*
1 5 hsdjksd
4 2 484sdc
7 1 dsjldsjk
7 4 dsjljdls
1 7 544646ds
*/
#include <iostream>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
struct node
{
int a;
int b;
char name[10];
//string name;
//用于不初始化定义
//node() {};
//用以提供a,b的初始化
//node(int x, int y) :a(x), b(y),name {};
}save,dd[10];
bool cmp(node m, node n)
{
if (m.a == n.a)
//按name从小到大排
//return strcmp(m.name.c_str(), n.name.c_str() )< 0;
return strcmp(m.name, n.name) < 0;
else return m.a < m.a;
}
int main()
{
node save2;
int num = 0;
for (int i = 0; i < 5; i++)
{
//dd[num++] = node(i, i+2);
scanf("%d %d %s",&dd[num].a,&dd[num].b,dd[num].name);
num++;
}
for (int i = 0; i < 5; i++)
{
cout << dd[i].a << " " << dd[i].name << endl;
}
sort(dd, dd + 5, cmp);
cout << "after sort" << endl;
for (int i = 0; i < 5; i++)
{
cout << dd[i].a << " " << dd[i].name << endl;
}
}
6.char型数组排序
【注意】ascll码表中,a=97,A=65!!!
bool cmp(char m, char n)
{
return m > n;
}
int main()
{
char xy[10] = { 'a','b','e','c','k','d' };
sort(xy, xy + 6, cmp);
for (int i = 0; i < 6; i++)
cout << xy[i] << " ";
}
7.STL排序
- vector my排序,则cmp是int型
调用sort(my.begin(),my.end(),cmp); - sting str[3]排序,默认字典序,sort(str,str+3);
可以按字符串大小排序, return a.size()<b.size();
7.1 自定义排序方向
参考连接link
1. less<int> 递减排序
sort(my.begin(),my.end(),less<int>);
2. greater<int> 递增排序
sort(my.begin(),my.end(),greater<int>);
3 对于二维向量vector<vector> clips,
默认的排序结果是第一维从大到小,在第一维相同时第二维从大到小排列。
也可以自定义排序规则,下面示例, 第一维从小到大,第一维相同时,第二维从大到小
【注意!!!】static不能少
static bool cmp(vector<int> a,vector<int> b)
{
if(a[0]==b[0])
return a[1]>b[1];
else return a[0]<b[0];
}
int videoStitching(vector<vector<int>>& clips, int time)
{
sort(clips.begin(),clips.end(),cmp);
for(int i=0;i<clips.size();i++)
{
for(int j=0;j<2;j++)
{
cout<<clips[i][j]<<" ";
}
cout<<endl;
}
}