一、关于vector


本文默认读者具有一定的c++基础,故大致叙述,但保证代码正确。

vector是一个动态的序列容器,相当于一个size可变的数组。

相比于数组,vector会消耗更多的内存以有效的动态增长。而相比于其他动态序列容器(deques, lists and forward_lists),vector能更快的索引元素(就像数组一样),而且能相对高效的在尾部插入和删除元素。如果不是在尾部插入和删除元素,效率就没有这些容器高。

当需要使用vector的时候,需要包含头文件:#include <vector>,一般加上using namespace std;如果不加,则在调用时候必须用std::vector<...>这样的形式,即在vector前加上std::,这表示运用的是std命名空间下的vector容器。

二、常见用法(以int类型为例)


1.声明及初始化

    vector<int> a;    //声明一个int型向量a
vector<int> a(10); //声明一个初始大小为10的向量
vector<int> a(10, 1); //声明一个初始大小为10且初始值都为1的向量 vector<int> b(a); //声明并用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3); //将a向量中从第0个到第2个(共3个)作为向量b的初始值 int n[] = {1, 2, 3, 4, 5};
vector<int> a(n, n+5); //将数组n的前5个元素作为向量a的初值
vector<int> a(&n[1], &n[4]); //将n[1] - n[4]范围内的元素作为向量a的初值

2.添加元素

    vector<int> a;
a.push_back(1); //在尾部加入一个数据
a.push_back(2);
a.pop_back(); //删除最后一个数据
a.insert(a.begin(), 0); //在a.begin()之前加入0
a.erase(a.begin()); //将a.begin()的元素删除
a.erase(a.begin() + 1, a.end()); //将第二个元素以后的元素均删除

3.判断vector是否为空

    vector<int> a;
if(a.empty()){
a.push_back(1);
}

4.遍历访问vector

    vector<int> a;
//像数组一样以下标访问
for(int i = 0; i < a.size(); i++){
cout << a[i];
} //以迭代器访问
vector<int>::iterator it;
for(it=a.begin(); it!=a.end(); it++){
cout<<*it<<" " ;
}

5.排序必须包含algorithm头文件

    #include <algorithm>

    vector<int> a;
sort(a.begin(), a.end());

6.以vector实现二维数组

    vector<vector<int>> a(10, vector<int>(5));    //创建一个10行5列的int型二维数组 相当于a[10][5];

同理可以创建三维及以上数组,这些多维数组的操作同一维的vector类似。

C++序列容器之 vector常见用法总结的更多相关文章

  1. C++STL模板库序列容器之vector

    目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. 三丶常用算法 1.常见算法中的算法方法. 2.sor ...

  2. STL序列容器之vector

    一,vector容器简介 1.vector容器的原理 vector是将元素置于一个动态数组中加以管理的容器. 2.vector容器的特点 vector容器可以随机存取元素,支持索引存取(即用数组下标的 ...

  3. [知识点]C++中STL容器之vector

    零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 关于STL和STL容器的概念参见STL系列第一篇——map(见上).今天介绍第二个成员——vector. 二.用途 ...

  4. STL vector常见用法详解

    <算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...

  5. 顺序容器之vector

    最近因为需要,在看C++ primer,哇,感觉这本书真不错,讲的细而且到位,而且大量的练习题,不愧为C++学习的经典书籍.今天看了顺序容器方面的内容,现在汇报一下: 一.什么是vector vect ...

  6. C++ 序列式容器之vector

     什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array,  链表list,  树tree ...

  7. STL容器之vector

    [1]模板类vector 模板类vector可理解为广义数组.广义数组,即与类型无关的数组,具有与数组相同的所有操作. 那么,你或许要问:既然C++语言本身已提供了一个序列式容器array,为什么还要 ...

  8. c++ 中vector 常见用法(给初学者)

    c++ 中 vector vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capacity,表示当前vector在内存中申请的这片区域所能容纳的元素个数. ca ...

  9. C++容器之Vector

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vect ...

随机推荐

  1. hdu 5753

    Permutation Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  2. Makefile简单编写实例

    介绍一下Makefile的简单编写例子. 编写Makefile的规则就是: 目标文件:依赖文件 (tab)编译规则 现在我有一个文件目录结构为: 解释一下这几个文件.首先我创建makefile目录,底 ...

  3. Dell PowerEdge服务器RAID卡驱动下载

    Dell PowerEdge服务器RAID卡驱动下载 DELL新阵列卡驱动下载 型号 支持系统驱动 H310/710 /710P/810 Win2008 x32 Windows 2008 x64 Wi ...

  4. [科普] CPU, GPU, TPU的区别

    Google Cloud 原文链接:https://cloud.google.com/blog/products/ai-machine-learning/what-makes-tpus-fine-tu ...

  5. 部分和问题(dfs)

    部分和问题 描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K. 输入 首先,n和k,n表示数的个数,k表示数的和.接着一行n个数.(1<=n<= ...

  6. drawable SVG 使用

    Android会使用一些规则来去帮我们匹配最适合的图片.什么叫最适合的图片?比如我的手机屏幕密度是xxhdpi,那么drawable-xxhdpi文件夹下的图片就是最适合的图片.因此,当我引用andr ...

  7. TP框架如何绑定参数。目的进行ajax验证

    TP框架的自动绑定 对于某些操作的情况(例如模型的写入和更新方法),可以支持参数的自动绑定,例如: 首先需要开启DB_BIND_PARAM配置参数: 'DB_BIND_PARAM' => tru ...

  8. linux搭建ftp配置文件

    # Example config file /etc/vsftpd/vsftpd.conf## The default compiled in settings are fairly paranoid ...

  9. LC 562. Longest Line of Consecutive One in Matrix

    Given a 01 matrix M, find the longest line of consecutive one in the matrix. The line could be horiz ...

  10. TortoiseGit的安装

    运行TortoiseGit-1.7.7.0-32bit.msi, 如下图 点击Next, 下一步 点击Next, 下一步 选择ssh客户端, 使用默认, 点击Next, 下一步 选择安装路径, 点击N ...