今天在做一个学生类的管理系统时,由于没有用到数据库,这就需要一个可以容纳学生的容器。在网上找了一段时间,发现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;