C++ vector类讲解
今天在做一个学生类的管理系统时,由于没有用到数据库,这就需要一个可以容纳学生的容器。在网上找了一段时间,发现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类讲解相关推荐
- C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)习题答案
理论讲解请参考:C++ Primer 第五版 第7章类 7.1--类讲解(成员函数.非成员函数.构造函数) 目录 7.1 定义抽象数据类型习题答案 7.4&7.5 7.6&7.7 7. ...
- Java API —— ArrayList类 Vector类 LinkList类
1.ArrayList类 1)ArrayList类概述 · 底层数据结构是数组,查询快,增删慢 · 线程不安全,效率高 2)ArrayList案例 · 存储字符串并遍历 · 存储自定义对象并遍历 2. ...
- MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解
MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 文章目录 MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 前言 一.MOOSapp父类的结构和方法 1.使用 ...
- 【C++】vector类概述
vector 一.标准库中的vector 1.1 vector的介绍 1.2 vector的常用接口 1.2.1 vector的常见构造 1.2.2 vector类对象的访问及遍历操作 1.2.3 v ...
- 【C++】手把手教你写出自己的vector类
在上一篇博客中,我们学习了vector 的基本使用,以及 迭代器的失效问题: [C++]深入理解vector类(一) 今天我们来模拟实现以下vector类. 目录 成员变量 接口实现 构造函数 迭代器 ...
- C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)
1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...
- 【stanford C++】容器III——Vector类
主要介绍如下5个容器类--Vector, Stack,Queue,Map和Set,各个都表示一重要的抽象数据类型.另外,各个类都是一些简单类型的值的集合,所以称它们为容器类. 暂且我们先不需要知道它们 ...
- java向量vector类,java数据结构——Vector(向量类)
Vector底层是用数组实现的,其容量是可以动态扩展的,默认初始容量是10,默认增长因子是0,详细的扩容方式会在构造方法中讲述. Vector对象和ArrayList一样可以随意插入不同类的对象,因为 ...
- 黑马程序员--打印流、序列输入流、Vector 类
--------- android培训.java培训.期待与您交流! --------- 1 打印流 打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印. 字节打印流: PrintStr ...
最新文章
- MATLAB crc.generato,matlab中CRC的函数使用
- 企业网站6个常见的优化漏洞
- 目标检测如何计算召回率_计算机视觉目标检测的框架与过程
- android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化
- 微信红包发送关键代码
- word排版字体选用
- 提升生产力,7 款好用的原型图工具推荐给你
- Java使用OpenOffice将office文件转换为PDF
- DOTA数据集 | 数据前后处理操作系列
- 挑战华为社招:智慧树java程序设计答案
- Android 使用Calendar类获取系统时间
- 05.Linux 常用命令-网络命令\关机重启命令
- 算法实践——数独的基本解法
- LeetCode——390.消除游戏
- DllPlugin动态链接库插件
- 处理器排行_数字信号处理器价格和库存TOP10排行
- 奶茶制作APP开发模式解析
- java 电子秤串口通信_电子秤重量读取(串口通讯)
- android怎么实现文字制作,如何在Android中制作传统的蒙古文字TextView
- lintel安装成功记与血泪史