根据各种做题,发现数组并不是很适用于各种情况,当涉及到内存占用的时候,数组可能就没有vector的优势了,而vector,动态数组,比较适合某些情况。

接下来看看比较基本的vector用法:

 1 #include<iostream>2 #include<vector>3 using namespace std;4 5 int main()6 {7     int i;8     int A[10]={9,5,8,6,4,2,3,7,0,1};9     vector<int> V;
10
11     for(i=0;i<10;i++)
12     {
13         V.push_back(A[i]);
14     }
15
16     vector<int>::iterator it;
17     for(it=V.begin();it!=V.end();it++)
18     {
19         cout<<*it<<endl;
20     }
21
22     return 0;
23 } 

这里还用了一个迭代器访问元素。

注意点:

1,引用头文件:#include<vector>

2,创建vector 对象 : vector<int> V;

3,尾插元素: V.push_back(a[i]);

4,插入元素:  V.insert(V.begin()+i,a); //在第i+1个元素前面插入a

5,删除元素:vec.erase(vec.begin()+i); //删除第i+1个元素

6,求vector的长度:V.size();

 1 #include<iostream>2 #include<vector>3 #include<algorithm>  4 using namespace std;5 6 int main()7 {8     int i;9     int A[10]={9,5,8,6,4,2,3,7,0,1};
10     vector<int> V;
11
12     for(i=0;i<10;i++)
13     {
14         V.push_back(A[i]);
15     }
16
17     sort(V.begin(),V.end());//排序方法
18
19     vector<int>::iterator it;
20     for(it=V.begin();it!=V.end();it++)
21     {
22         cout<<*it<<" ";
23     }
24
25     return 0;
26 } 

在这个基础上,加上 头文件#include<algorithm> 中的sort() 方法,就可以得出排序好了的

这种是升序的,降序的话,sort(vec.begin(),vec.end(),Comp),这样就降序排序。

百度的Comp:

bool Comp(const int &a,const int &b)
{return a>b;
}

主要是以前虽然学过vector,但并没有真正去理解它,以后遇到一些数组处理不过来的问题,会尝试着利用vector的。

在PAT中,也有这种题目,我自己编译的话,主要的问题就是段问题,超哥说问题在于我的数组,之前曾写过各种排序算法的性能分析,当时由于想要看到时间,所以定义了一个二维数组,都很大int A[100][1000],记得只能写成这个样子,不然就不能运行了。所以,同理,可能这就是动态数组的好处,只是当时不能熟练地去利用vector这个容器。

下面来看PAT中的题目:

链接:https://www.patest.cn/contests/pat-b-practise/1015

这个题目要求的范围也比较大,动态数组用起来就很方便了。

因为我用的是数组,然后逻辑,就是比较排序出了一点点问题,然后就百度了看看:

 1 #include<vector>  2 #include<cstdio>  3 #include<algorithm>  4 using namespace std;  5   6 struct student  7 {  8     int kaohao;  9     int defen;
10     int caifen;
11     int zongfen;
12 };
13
14 bool compare(student a,student b) //比较a在b前则返回true,表示a在b前面
15 {
16     if(a.zongfen>b.zongfen)
17         return true;
18     else if(a.zongfen == b.zongfen)
19     {
20         if(a.defen>b.defen)
21             return true;
22         else if(a.defen==b.defen)
23         {
24             if(a.kaohao<b.kaohao)
25                 return true;
26         }
27     }
28     return false;
29 }
30
31 int main()
32 {
33     vector<student> v1,v2,v3,v4;//表示四类考生
34     student stu;//学生信息临时保存
35     int count=0;//达标的学生总数
36     int N,L,H;
37
38     //cin>>N>>L>>H;
39     scanf("%d %d %d",&N,&L,&H);
40     int K,D,C;
41     while(N--)
42     {
43         //cin>>K>>D>>C;
44         scanf("%d%d%d",&K,&D,&C);
45         stu.kaohao = K;
46         stu.defen = D;
47         stu.caifen = C;
48         stu.zongfen = D+C;
49         if(D>=L && C>=L)
50         {
51             count++;
52             if(D>=H && C>=H)
53                 v1.push_back(stu);
54             else if(D>=H && C<H )
55                 v2.push_back(stu);
56             else if(D<H && C<H  && D>=C)
57                 v3.push_back(stu);
58             else
59                 v4.push_back(stu);
60         }
61
62     }
63     printf("%d\n",count);
64     sort(v1.begin(),v1.end(),compare);
65     sort(v2.begin(),v2.end(),compare);
66     sort(v3.begin(),v3.end(),compare);
67     sort(v4.begin(),v4.end(),compare);
68
69     vector<student>::iterator itr;
70     for(itr=v1.begin();itr!=v1.end();itr++)
71         printf("%d %d %d\n",itr->kaohao,itr->defen,itr->caifen);
72     for(itr=v2.begin();itr!=v2.end();itr++)
73         printf("%d %d %d\n",itr->kaohao,itr->defen,itr->caifen);
74     for(itr=v3.begin();itr!=v3.end();itr++)
75         printf("%d %d %d\n",itr->kaohao,itr->defen,itr->caifen);
76     for(itr=v4.begin();itr!=v4.end();itr++)
77         printf("%d %d %d\n",itr->kaohao,itr->defen,itr->caifen);
78
79     system("pause");
80     return 0;
81 } 

做这个题,我真的是花费了好长的时间,最后排序的时候,逻辑还出现了一点状况,导致后来实在是没有办法继续坚持下去。。。。所以再做一个题的时候,先思考清楚,再做题才是明智的。

也有可能以后不怎么用vector,但是多学习学习,说不定就用到了呢!

每天都要进步一点,积少以成多。。。
此文转载!

转载于:https://www.cnblogs.com/chun6/p/6188927.html

c++中vector的学习相关推荐

  1. C++ 中vector的学习

    根据各种做题,发现数组并不是很适用于各种情况,当涉及到内存占用的时候,数组可能就没有vector的优势了,而vector,动态数组,比较适合某些情况. 接下来看看比较基本的vector用法: 1 #i ...

  2. java中vector容器,vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  3. CG中的深度学习 |Siggraph 2017 相关论文总结

    原文链接https://blog.uwa4d.com/archives/1810.html 这是侑虎科技第249篇文章,感谢作者李旻辰供稿,欢迎转发分享,未经作者授权请勿转载.当然,如果您有任何独到的 ...

  4. STL中Vector的内存分配机制

    一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...

  5. 在Tensorflow中使用深度学习构建图像标题生成器

    by Cole Murray 通过科尔·默里(Cole Murray) 在Tensorflow中使用深度学习构建图像标题生成器 (Building an image caption generator ...

  6. 从原理到应用落地,一文读懂推荐系统中的深度学习技术

    作者丨gongyouliu.zandy 来源丨大数据与人工智能(ID:ai-big-data) 2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一时成为轰动全球的重 ...

  7. 深度学习中的表示学习_Representation Learning

    一.深度学习网络的表达方式汇总及模型分类方法 人的大脑会对眼睛捕捉到的外界事物进行逐级抽象,逐渐提取出抽象的语义信息,以便为人脑所理解.深度学习从这一科学发现得到启发,通过网络的权值来捕捉外界输入模式 ...

  8. STL学习--vector的学习

    (一):学习目标: 1:模板,包括函数模板和类模板 2:容器及其分类,以容器中的数据结构 3:容器vector和迭代器的具体用法 (二):学习 1:函数模板 /*** 学习模板函数*/ int max ...

  9. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

  10. 3ds Max中的V-Ray学习

    时长3h 30m 大小解压后:2.73G 包含项目文件 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 3ds Max中的V-Ray简介:官方V-Ray导师 云桥网络 获 ...

最新文章

  1. Linux系统自动更新时间
  2. 内地计算机学校,全球大学计算机实力排名:清北人工智能内地前2
  3. python 模糊匹配文件名 glob_Python: glob匹配文件
  4. Wow,一个免费、不怕打的评论插件!
  5. 位运算之左移右移运算之详解
  6. linux删除csv换行符,从CSV保存行删除换行符(Remove linefeed from csv preserving r
  7. java并发(二):初探syncronized
  8. Groovy获取json和xml数据
  9. POJ 1325 Machine Schedule 解题报告
  10. python小球弹跳_python实现小球弹跳效果
  11. 12个C语言必背实例
  12. 74ls系列芯片的分类
  13. word中文输入时,符号却是英文符号,修改方法
  14. js实现页面视频监控全屏
  15. 2022年3月15日黑马第三天
  16. 松下MINAS-A6伺服电机调试记录
  17. 复盘二: 了解自我和管理自我,诚惶诚恐,保持敬畏-- 宁向东的清华管理学课总结
  18. y yun m_yun是y---un 组成 ,还是y----ün组成
  19. java 宕机_Java应用/JVM宕机排查步骤操作
  20. 车载以太网会是传统总线的末路吗?

热门文章

  1. 电脑 运行中 主板喇叭 警报声_网络资讯:电脑电源线是什么
  2. 【渝粤题库】陕西师范大学180213《消费经济学》作业 (高起本)
  3. MATLAB数组生成、引用
  4. Oracle数据库-建库、建表空间,建用户
  5. 详解Angular开发中的登陆与身份验证
  6. python_内置字符串
  7. 算法59----打家劫舍【动态规划】
  8. Spring Security OAuth2实现单点登录
  9. FCC 基础JavaScript 练习6
  10. 【SYZOI Round1】滑稽的树