C++小知识积累

2018-06-22 05:36:57来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、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分割成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 }

结果:

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

结果:

 四、string根据空格分割为多个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 } 

结果:

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:合并两个数组 以KEY 作为键

下一篇:YII2框架下使用PHPExcel导出柱状图