C++小知识积累
程序员文章站
2022-04-15 20:15:00
vector创建及其排序;string分割成char[]--strtok();string 转 int-- atoi(); ......
一、vector创建及其排序
1.vector:c++容器,类似数组,但不限长度。
2.基本类型输入输出及排序:
1 #include<iostream> 2 #include<vector> 3 #include<functional> 4 #include<algorithm> 5 using namespace std; 6 7 int main(){ 8 int a[12]={4,1,5,10,9,6,3,2,7,8,11,12}; 9 vector<int> num(10); 10 //输入值 11 for(int i=0;i<10;i++){ 12 num[i]=a[i]; 13 } 14 //追加值 15 num.push_back(a[10]); 16 num.push_back(a[11]); 17 //输出值 18 cout<<"初始:"; 19 for(int j=0;j<num.size();j++) 20 cout<<num[j]<<" "; 21 //排序(通过begin(),end()来挑选值的个数) 22 //升序--默认 23 sort(num.begin(),num.end()); 24 //输出值 25 cout<<endl<<"升序:"; 26 for(int j=0;j<num.size();j++) 27 cout<<num[j]<<" "; 28 //降序--greater函数需要include<functional> 29 sort(num.begin(),num.end(),greater<int>()); 30 //输出值 31 cout<<endl<<"降序:"; 32 for(int j=0;j<num.size();j++) 33 cout<<num[j]<<" "; 34 }
结果:
3.结构体类型排序:
1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 #include<string.h> 5 using namespace std; 6 7 typedef struct point{ 8 string name; 9 int x,y; 10 }point; 11 //x降序排序 12 bool compare_x1(point p1,point p2){ 13 return (p1.x>p2.x); 14 } 15 //x升序排序 16 bool compare_x2(point p1,point p2){ 17 return (p1.x<p2.x); 18 } 19 //y降序排序 20 bool compare_y1(point p1,point p2){ 21 return (p1.y>p2.y); 22 } 23 //y升序排序 24 bool compare_y2(point p1,point p2){ 25 return (p1.y<p2.y); 26 } 27 28 int main(){ 29 //初始化 30 point p1,p2; 31 p1.name="p1"; 32 p2.name="p2"; 33 p1.x=1;p2.x=2; 34 p1.y=2;p2.y=1; 35 //创建并加入vector 36 vector<point> p; 37 p.push_back(p1); 38 p.push_back(p2); 39 //显示 40 int i; 41 cout<<"初始:"; 42 for(i=0;i<p.size();i++) 43 cout<<p[i].name<<" "; 44 //x降序排序 45 sort(p.begin(),p.end(),compare_x1); 46 cout<<endl<<"x降序(p1.x<p2.x):"; 47 for(i=0;i<p.size();i++) 48 cout<<p[i].name<<" "; 49 //x升序排序 50 sort(p.begin(),p.end(),compare_x2); 51 cout<<endl<<"x升序(p1.x<p2.x):"; 52 for(i=0;i<p.size();i++) 53 cout<<p[i].name<<" "; 54 //y降序排序 55 sort(p.begin(),p.end(),compare_y1); 56 cout<<endl<<"y降序(p1.y>p2.y):"; 57 for(i=0;i<p.size();i++) 58 cout<<p[i].name<<" "; 59 //y升序排序 60 sort(p.begin(),p.end(),compare_y2); 61 cout<<endl<<"x降序(p1.y>p2.y):"; 62 for(i=0;i<p.size();i++) 63 cout<<p[i].name<<" "; 64 }
结果:
二、string分割成char[]--strtok()
1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 5 int main(){ 6 char s[]="11:11:59"; 7 //分割 8 char* p=strtok(s,":"); 9 //变成char[] 10 string t[3]; 11 int m=0; 12 while(p!=NULL){ 13 t[m]=p; 14 m++; 15 p=strtok(NULL,":"); 16 } 17 //显示 18 for(int i=0;i<3;i++){ 19 cout<<t[i]<<" "; 20 } 21 }
结果:
三、string 转 int-- atoi()
接上面代码:(***#include<algorithm>)
1 //String--int 2 int hour=atoi(t[0].c_str()); 3 int minute=atoi(t[1].c_str()); 4 int second=atoi(t[2].c_str()); 5 cout<<endl<<hour<<":"<<minute<<":"<<second;
结果:
上一篇: 编译安装LNMP