C++

vector小结

2017-02-23  本文已影响117人  埠默笙声
一只名为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);
//假设已有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自行结束,行就会自增,是不是很酷呢?_

上一篇 下一篇

猜你喜欢

热点阅读