C++小知识积累
一、vector創(chuàng)建及其排序
1.vector:c++容器,類似數(shù)組,但不限長度。
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()來挑選值的個數(shù)) 22 //升序--默認(rèn) 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函數(shù)需要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 }結(jié)果:
3.結(jié)構(gòu)體類型排序:
?
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 //創(chuàng)建并加入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 }結(jié)果:
二、string分割成string[]--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 //變成string[] 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 }結(jié)果:
三、string 轉(zhuǎn) 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;結(jié)果:
?四、string根據(jù)空格分割為多個string(利用字符串流)
1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 using namespace std; 5 int main(){ 6 string str1 = "qwe bbb 333"; 7 string str2,str3,str4; 8 istringstream is(str1); 9 is>>str2>>str3>>str4; 10 cout<<str2<<","<<str3<<","<<str4<<endl; 11 }結(jié)果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/candywu-blog/p/8530339.html
總結(jié)
- 上一篇: 腾讯云CentOS 7 上安装Nginx
- 下一篇: 别名、浅复制与深复制