欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 }

结果:

C++小知识积累

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 } 

结果:

C++小知识积累

二、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 }

结果:

C++小知识积累

三、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; 

结果:

C++小知识积累