vector小结

一只名为vector的蜂巢

vector是使用频率非常高的一个容器,经过一段时间的学习,是时候做个小结了。贴一些好用的链接和帖子:
1.比较简明的英文介绍:std::vector
2.中文帖子:vector的成员函数解析
3.适合后续深入了解: C++存储数据结构之三vector

基本用法

1.头文件及声明

#include<vector>
using std::vector;

2.创建vector对象

vector<int> vec;//默认构造
vector<int> vec1(vec);//复制构造
vector<int> vec2(n,I);//vec2初始化为n个元素I
vector<int> vec3(n);//vec3初始化为n个int类型的缺省值

3.尾部插入元素 vec.push_back(a);
4.使用下标访问元素 cout << vec[0] <<endl;
5.使用迭代器访问元素

vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++) {
    cout<<*it<<endl;
}

6.插入元素:vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a
7.删除元素:vec.erase(vec.begin()+2); //删除第3个元素
8.返回容器大小:cout << vec.size() <<endl;
9.重新定义容器大小:vec.resize(n);
10.清空容器:vec.clear();


相关算法

1.使用reverse将元素翻转:头文件#include<algorithm>;声明using std::reverse;.

reverse(vec.begin(),vec.end());
//将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)

2.使用sort排序:头文件#include<algorithm>;声明using std::sort;.

sort(vec.begin(),vec.end());
//默认升序排列

第三个参数可以用lambada表达式选择升降序:

sort(
  vec.begin(),
  vec.end(),
  [](int x, int y){ return x >= y; }//降序排列
);

应用:动态的二维数组

  • 行定长,列动态
vector<vector<int> > vec(10);
//vec初始化为10个vector<int>类型缺省值,每一个都是一个空的动态数组.
for(int i=0;i<5;i++) {
    vec[5].push_back(i);
}
  • 行,列都动态
    • 用户输入行数
cin >> n;
vector<vector<int> > vec(n);
  • 用户不输入行数
    例如要求用户录入各班级的学生的学号和成绩,但用户并不知道有多少个班,只是想录完一定数量的班级后,自己结束输入(比如输入-1)。
//假设已有Student类
vector<vector<Student> > Class;
    int classID = 1;
    int n;
    while(1) {
        //输入班级学生人数
        cin >> n;
        if(n == -1)break;
        Class.resize(classID);
        //输入所有学生的信息
        Student input;
        for(int i=0;i<n;i++) {
            cin >> input.ID >> input.score;
            Class[classID].push_back(input);
        }
        //准备输入下一个班级
        classID++;
    }

输入例子:
3 1237 90 1238 70 1239 60 2 1367 78 1368 92 -1
以上,只要用户不输入-1自行结束,行就会自增,是不是很酷呢?_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 接着上节 condition_varible ,本节主要介绍future的内容,练习代码地址。本文参考http:/...
    jorion阅读 14,985评论 1 5
  • 前言: 详细介绍: List:元素有放入顺序,元素可重复Map:元素按键值对存储,无放入顺序Set:元素无放入顺序...
    YBshone阅读 12,799评论 0 17
  • 10.1 概述 #include //大部分算法定义 #include <numeric> //数值泛型算法 ...
    龙遁流阅读 3,701评论 0 1
  • 还是蛮伤感的,尤其是昨晚妹妹的那句话“等我哥回来,我得适应几天,我有这个哥哥;等他走了,我又得适应几天,这个哥哥走...
    oucgy阅读 2,784评论 0 0
  • 当最后一滴雨流入院墙 天就晴了 云一丝也不剩 风的魂灵低吟着哀伤的恸歌 为着死掉的亡雨 雨的身体正慢慢渗入漆黑的土...
    希寻阅读 1,126评论 0 2

友情链接更多精彩内容