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

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

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;

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

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;

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值