美文网首页C++
vector小结

vector小结

作者: 埠默笙声 | 来源:发表于2017-02-23 22:19 被阅读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);
  • 用户不输入行数
    例如要求用户录入各班级的学生的学号和成绩,但用户并不知道有多少个班,只是想录完一定数量的班级后,自己结束输入(比如输入-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自行结束,行就会自增,是不是很酷呢?_

相关文章

  • vector小结

    基本用法 1.头文件及声明 2.创建vector对象 3.尾部插入元素 vec.push_back(a);4.使用...

  • svg知识小结及心得

    小结 简洁介绍:SVG即saclable vector graphics,可伸缩矢量图。svg的第一个版本在200...

  • c++常用数据结构

    问题:vector与数组的区别? 1、vector vector v;//创建vector v....

  • 指针

    ①动态指针问题. vector * pvt = new vector [100]; vector * tt; tt...

  • 2021-12-01 opencv findContours a

    std::vector contours; std::vector hi...

  • 13.C++ vector 操作

    vector初始化 vector大小 数组方式操作vector 迭代器方式操作vector 反向迭代器操作vect...

  • c++零散知识

    1、vector vector对象内存增长原理,当向vector添加新元素而vector没有足够的内存保存新元素时...

  • vector

    一、vector介绍:可边长数组1、vector的定义:vector name;注:vecto...

  • Collection-Vector

    jdk版本:1.8.0_77参考文档:jdk 1.8 docs Vector类图 Vector特点 Vector对...

  • vector 简单用法

    vector 简单用法 数组传进vector方式: int a[3]={1,2,3} vector test;...

网友评论

    本文标题:vector小结

    本文链接:https://www.haomeiwen.com/subject/ckbvwttx.html