今天在做一个学生类的管理系统时,由于没有用到数据库,这就需要一个可以容纳学生的容器。在网上找了一段时间,发现c++中的vector类可以较好的满足这样的要求,下面就简单的讲解一下c++中的vector类的相关用法(详情请看msdn)。

模板vector类是一个根据给予的数据类型按照线性布局排列元素的序列容器。当我们需要高效随机存取数据元素的时候,这个类比较好用。

template <

class Type,

class Allocator = allocator<Type>

>

class vector

参数:Type:储存到vector中的数据类型。

Allocator:类型表示的储存分配对象封装了vector底层对内存的分配与回收细节。这个参数是可选的,一般默认的值是allocator<Type>.

列:vector<int> intvector;

简介:

Vector向量允许在序列的末端插入或删除数据元素。在vector向量的中间插入或删除元素要求线性时间。如果要在序列开始和结尾之间插入或删除数据用deque(双列队) class容器效果会更好,而要在序列任意位置上插入或删除元素用List class容器更好。当成员方法添加的数据元素大于vector当前对象的储存容量时,vector向量的内存将会重新分配。另外插入或消除元素可能会改变序列内部的储存地址。在所有这些情况下,迭代器或者引用的序列改变部分会变得无效。如果没有发生重新分配,那么只有在插入删除点之前的元素是有效的。

Vector向量:

构造函数

构造一个有特殊大小或者特殊值或者复制其他vector全部或部分数据的vector。

vector( );

explicit vector(

const Allocator& _Al

);

explicit vector(

size_type _Count

);

vector(

size_type _Count,

const Type& _Val

);

vector(

size_type _Count,

const Type& _Val,

const Allocator& _Al

);

vector(

const vector& _Right

);

template<class InputIterator>

vector(

InputIterator _First,

InputIterator _Last

);

template<class InputIterator>

vector(

InputIterator _First,

InputIterator _Last,

const Allocator& _Al

);

vector(

vector&& _Right

);

实例:

// vector_ctor.cpp

// compile with: /EHsc

#include <vector>

#include <iostream>

int main( )

{

using namespace std;

vector <int>::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter;

// Create an empty vector v0

vector <int> v0;

// Create a vector v1 with 3 elements of default value 0

vector <int> v1( 3 );

// Create a vector v2 with 5 elements of value 2

vector <int> v2( 5, 2);

// Create a vector v3 with 3 elements of value 1 and with the allocator

// of vector v2

vector <int> v3( 3, 1, v2.get_allocator( ) );

// Create a copy, vector v4, of vector v2

vector <int> v4( v2 );

// Create a new temporary vector for demonstrating copying ranges

vector <int> v5( 5 );

for ( int index = 0; index < 5; index++ )

v5[index] = index;

// Create a vector v6 by copying the range v5[_First, _Last)

vector <int> v6( v5.begin( ) + 1, v5.begin( ) + 3 );

// Move vector v2 to vector v7

vector <int> v7( move(v2) );

vector <int>::iterator v7_Iter;

类型定义

Allocator_type

Const_iterator

提供一个可以读取vector元素的随机储存迭代器

Const_pointer

提供一个指向vector const元素的指针

Const_reference

提供一个vector储存的const元素的引用,用来执行const操作

Const_reverse_iterator

提供一个可以访问vector中const元素的随机储存迭代器

Difference_type

提供两个元素地址之间的差异类型

iterator

提供一个可以读取和修改元素的迭代器

ponter

提供一个指向vector一个元素的指针

reference

提供一个储存在vector中的元素的引用

Reverse_iterator

提供一个可以读取和修改反向vector元素的迭代器

Size_type

基数vector元素的个数

Value_type

代表储存在vector中的数据类型

成员方法

1.

void assign(

size_type _Count,    //元素个数

const Type& _Val     //元素值

);

template<class InputIterator>

void assign(

InputIterator _First,   //拷贝在元素范围中的第一个元素的位置

InputIterator _Last   //拷贝在元素范围中的最有一个元素的位置

);

方法介绍:清除vector中的元素并且拷贝其他vector中的元素到一个空的vector

2.

reference at(

size_type _Pos    //vector中指定的元素位置

);

const_reference at(

size_type _Pos

) const;

方法介绍:返回vector中指定位置的元素的引用

3.

reference back( );

const_reference back( ) const;

方法介绍:返回vector中最后一个元素的引用

4.

const_iterator begin() const;

iterator begin();

方法介绍:返回vector中第一个元素的迭代器

5.

size_type capacity( ) const;

方法介绍:返回vector中可以容纳的元素个数。

6.

const_iterator cbegin() const;

方法介绍:返回vector中第一个元素的迭代器

7.

const_iterator cend( ) const;

方法介绍:返回vector中最后的一个迭代器,如果是空的vector,那么vector::cend()==vector::cbegin().

8.

const_reverse_iterator crbegin( ) const;

方法介绍:返回相反vector(vector中的元素反过来)中第一个元素的迭代器

9.

const_reverse_iterator crend( ) const;

方法介绍:返回标示vector中最后元素的迭代器

10.

iterator insert(

const_iterator _Where,

const Type& _Val

);

iterator insert(

const_iterator _Where,

Type&& _Val

);

void insert(

const_iterator _Where,

size_type _Count,

const Type& _Val

);

template<class InputIterator>

void insert(

const_iterator _Where,

InputIterator _First,

InputIterator _Last

);

方法介绍:在vector中的特殊位置插入一个元素或者一个范围。

11.

size_type max_size( ) const;

方法介绍:返回vector向量的最大长度

12.

void pop_back( );

方法介绍:删除vector中的末尾的元素

13.

void push_back(

const Type&_Val

);

void push_back(

Type&&_Val

);

方法介绍:在vector末尾出入一个元素

14.

size_type size( ) const;

方法介绍:返回当前vector中的元素个数

15.

void swap(

vector<Type, Allocator>& _Right

);

friend void swap(

vector<Type, Allocator >& _Left,

vector<Type, Allocator >& _Right

);

方法介绍:交换两个vector中的元素

运算符重载

1.

reference operator[](

size_type _Pos

);

const_reference operator[](

size_type_Pos

) const;

重载介绍:返回vector中特别元素的引用

2.

vector& operator=(

const vector& _Right

);

vector& operator=(

vector&& _Right

);

重载介绍:拷贝其他vector,并且置换当前vector中的元素

使用要求

1添加头文件:#include<vector>

2使用命名空间:using namespace std;

C++ vector类讲解相关推荐

  1. C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)习题答案

    理论讲解请参考:C++ Primer 第五版 第7章类 7.1--类讲解(成员函数.非成员函数.构造函数) 目录 7.1 定义抽象数据类型习题答案 7.4&7.5 7.6&7.7 7. ...

  2. Java API —— ArrayList类 Vector类 LinkList类

    1.ArrayList类 1)ArrayList类概述 · 底层数据结构是数组,查询快,增删慢 · 线程不安全,效率高 2)ArrayList案例 · 存储字符串并遍历 · 存储自定义对象并遍历 2. ...

  3. MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解

    MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 文章目录 MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 前言 一.MOOSapp父类的结构和方法 1.使用 ...

  4. 【C++】vector类概述

    vector 一.标准库中的vector 1.1 vector的介绍 1.2 vector的常用接口 1.2.1 vector的常见构造 1.2.2 vector类对象的访问及遍历操作 1.2.3 v ...

  5. 【C++】手把手教你写出自己的vector类

    在上一篇博客中,我们学习了vector 的基本使用,以及 迭代器的失效问题: [C++]深入理解vector类(一) 今天我们来模拟实现以下vector类. 目录 成员变量 接口实现 构造函数 迭代器 ...

  6. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  7. 【stanford C++】容器III——Vector类

    主要介绍如下5个容器类--Vector, Stack,Queue,Map和Set,各个都表示一重要的抽象数据类型.另外,各个类都是一些简单类型的值的集合,所以称它们为容器类. 暂且我们先不需要知道它们 ...

  8. java向量vector类,java数据结构——Vector(向量类)

    Vector底层是用数组实现的,其容量是可以动态扩展的,默认初始容量是10,默认增长因子是0,详细的扩容方式会在构造方法中讲述. Vector对象和ArrayList一样可以随意插入不同类的对象,因为 ...

  9. 黑马程序员--打印流、序列输入流、Vector 类

    --------- android培训.java培训.期待与您交流! --------- 1 打印流 打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印. 字节打印流: PrintStr ...

最新文章

  1. MATLAB crc.generato,matlab中CRC的函数使用
  2. 企业网站6个常见的优化漏洞
  3. 目标检测如何计算召回率_计算机视觉目标检测的框架与过程
  4. android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化
  5. 微信红包发送关键代码
  6. word排版字体选用
  7. 提升生产力,7 款好用的原型图工具推荐给你
  8. Java使用OpenOffice将office文件转换为PDF
  9. DOTA数据集 | 数据前后处理操作系列
  10. 挑战华为社招:智慧树java程序设计答案
  11. Android 使用Calendar类获取系统时间
  12. 05.Linux 常用命令-网络命令\关机重启命令
  13. 算法实践——数独的基本解法
  14. LeetCode——390.消除游戏
  15. DllPlugin动态链接库插件
  16. 处理器排行_数字信号处理器价格和库存TOP10排行
  17. 奶茶制作APP开发模式解析
  18. java 电子秤串口通信_电子秤重量读取(串口通讯)
  19. android怎么实现文字制作,如何在Android中制作传统的蒙古文字TextView
  20. lintel安装成功记与血泪史

热门文章

  1. 机器学习——聚类算法的C++简易实现(k=3)
  2. LTRIM函数和RTRIM函数
  3. 数据中台的大数据处理:数据采集、存储和清洗最佳实践
  4. 去年卖出4000万台后,荣耀发布了搭载麒麟650的畅玩5C
  5. 南昌大学计算机调剂难吗,说说我调剂的感受
  6. FS32K148调试之WDOG与电源模式
  7. IGBT反并联二极管的功能
  8. Win8.1开始菜单右键无反应!
  9. Spring Boot 集成 ElasticSearch,实现高性能搜索
  10. dropout与快问快答