Vector STL简要介绍

关于STL中的vector容器,以下做一些相关介绍。

vector 简要概述

  • vector 称作向量类,属于容器类,实现了动态的数组,用于元素数量变化的对象数组。简单来说,vector 也可以当作普通数组去使用,配合 vector 中的迭代器,能够更好管理其中的内容。
  • vector 类下标也从 0 开始,与普通数组不同的是,每当使用 push_back 增加内容的时候,其对象元素个数大小会增大,当使用 erase 释放元素的时候,其对象元素个数大小会减少
  • 接下来,便会介绍部分 vector 中的函数,以便于让读者了解 vector 容器的用法

首先 vector 容器,是这样定义的

 vector<int> pos;
//此定义了一个整型的空的 vector 容器,名称为pos vector<int>::iterator iterpos;
//此定义了一个整型的迭代器,名称为iterpos 下面,介绍 vector 中的构造函数 - vector()
//这是创建一个空的 vector 容器
exanple : vector<int> pos(); - vector(int nSize)
//这是创建一个包含nSize个数的vector容器
exanple : vector<int> pos( nSize ); - vector(int nSize, const T& t)
//创建一个大小为 nSize,初值为 t 的vector容器
exanple : vector<int> pos( nSize, t ); - vector(const vector& )
//从另一个 vector 中复制该 vector 容器
exanple : vector<int> pos1( pos2 );
( pos2为整型的vector容器 )

其次 vector 容器中,存在增加,删除,以及其他用途的函数

  • 首先,我们来讲一下增加函数

void push_back(const T& x);

此函数是向向量后边添加一个元素,其用法为
pos.push_back(3);
pos为vector申请的一维的一个容器,向后边推进的数据为3

iterator insert(iterator it, const T & x);

此函数是向容器中的某一元素前添加x元素,iterator为迭代器,相当于vector中使用的指针

void insert(iterator it, int n, const T& x);

向容器中的某一元素前增加相同的元素x,增加的数量为n个

void insert(iterator it, const_iterator first, const_iterator last);

该元素是向向量中的某一元素it前插入另一个相同类型向量的[ first, last )间的数据。
  • 其次,我们来讲一下删除函数

iterator erase(iterator it);

删除向量中的某一元素,利用迭代器,定位到vector容器中的位置,从而删除该元素。

iterator erase(iterator first, iterator last);

删除向量中[first, last)中的元素,利用迭代器,定位两个位置。
然后调用函数,从而删除该容器从first到last中的元素。

void clear();

此函数是删除向量/容器中的所有元素,为程序结束时,调用释放内存
  • 再者,我们来讲一下 vector 中的其他函数

bool empty() const;

此函数为判空函数,判断该向量/容器是否为空,如果为空,返回true,如果是非空,返回false(布尔值)

void swap(vector &);

此函数为交换两个同类型向量的数据

vector 可以用来动态申请二维数组,类似功能和二维数组调用类似,以下便是一个简短的例子


#include<iostream>
#include<cstdlib>
#include<vector>
using namespace std; //函数声明
void _Arry(vector<vector<int>>& arry, int line, int column); int main()
{
int column, line;
cin >> line >> column; //在此地方,声明了以为数组arry,有line个
vector< vector < int > > arry(line); //此地方,用申请来的arry数组,再次申请空间,申请column个,resize分配空间,创建对象
for (int i = 0; i < line; i++)
arry[i].resize(column); _Arry(arry, line, column); //清理申请来的空间,如何申请便如何清理
for (int i = 0; i < line; i++)
arry[i].clear();
arry.clear(); return 0;
} //调用函数调用申请的二维数组
void _Arry(vector<vector<int>>&arry,int line,int column)
{
for (int i = 0; i < line; i++)
for (int j = 0; j < column; j++)
arry[i][j] = 8; for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
cout << arry[i][j] << " ";
cout << endl;
}
}

部分图示如下:

- 向量本身

- 添加向量

- 删除向量

- 添加同一类型的多个向量


Vector 容器简单介绍的更多相关文章

  1. [C++ STL] 各容器简单介绍

    什么是STL? 1.STL(Standard Template Library),即标准模板库,是一个高效的C++程序库. 2.包含了诸多常用的基本数据结构和基本算法.为广大C++程序员们提供了一个可 ...

  2. vector容器经常用法

    容器简单介绍 定义及初始化 末尾插入元素 遍历 size 函数是能够动态添加的 通过下标操作添加改变vector内容不是安全的操作 仅能对已存在元素进行下标操作不存在会crash 将元素一个容器复制给 ...

  3. vector,list,deque容器的迭代器简单介绍

    我们知道标准库中的容器有vector,list和deque.另外还有slist,只不过它不是标准容器.而谈到容器,我们不得不知道进行容器一切操作的利器---迭代器.而在了解迭代器之前,我们得先知道每个 ...

  4. c++ 头文件 及 sort 和 vector简单介绍

    c++  sort :http://www.16kan.com/post/997260.html http://wenku.baidu.com/view/e064166daf1ffc4ffe47ac6 ...

  5. STL vector使用方法介绍

    介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  6. C++移动构造函数以及move语句简单介绍

    C++移动构造函数以及move语句简单介绍 首先看一个小例子: #include <iostream> #include <cstring> #include <cstd ...

  7. C++map类型 之 简单介绍

    一:map的前世今生 (1)从关联容器与顺序容器说起.关联容器通过键(key)存储和读取元素.而顺序容器则通过元素在容器中的位置顺序存储和訪问元素(vector,queue,stack,list等). ...

  8. 带你深入理解STL之Vector容器

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...

  9. STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

随机推荐

  1. 2016年第七届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分19分)2.结果填空 (满分35分)3.代码填空 (满分21分)4.程序设计(满分47分)5.程序设计(满分79分)6.程序设计(满分99分) 1.阶乘位数 9的阶乘等于:3628 ...

  2. docker-compose是个好东西,越用越香

     回顾前文 前文演示了在单一容器中部署 Nginx和ASP.NET Core WebApp, 正在前文评论区某大牛指出的,容器化部署 nginx+ASP.NET Core 有更符合实战的部署选择:多容 ...

  3. [51nod] 1007 正整数分组 dp

    将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的.   Input 第1行:一个数N,N为正整数的数量 ...

  4. 洛谷P1013 进制位

    P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...

  5. AC自动机板子(from. qwer)

    #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...

  6. uoj#402. 【CTSC2018】混合果汁(主席树+二分)

    传送门 我们先把果汁按照美味度排序,枚举\(d\),那么肯定是贪心的选择美味程度不小于\(d\)的且最便宜的果汁 发现\(d\)可以二分,那么在主席树上二分就可以了 据说还有整体二分的大佬然而我并不会 ...

  7. ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例

    前言 最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录. 首先介绍下使用ELK的项目背景:在项目的数据库里有个表用来存储消息队列的消费日志,这些日志用于开 ...

  8. JQuery扩展和事件

    一.jQuery事件 常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点( 搜索框例子) change([[data],fn]) 当select下拉 ...

  9. python进阶09 MySQL高级查询

    python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...

  10. 在jquery中使用AJAX

    在jquery中使用封装好的AJAX会对开发效率起到极大的便利,因此掌握jquery中的一系列AJAX封装函数是做好页面数据交互的必备技能: 1.在之前,我们首先需要详细了解AJAX异步请求接受的五中 ...