C++_vector使用规范

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++中的vector使用规范

一、概述

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。

Vector初始化

vector创建一个空的vector

vector c1(c2)复制一个vector。

vector c(n)创建一个vector,含有n个数据,数据均已缺省构造产生。vector c(n, elem)创建一个含有n个elem拷贝的vector。

vector c(beg,end)创建一个以[beg;end)区间的vector。

例如:

vector v3;

vector v(5,"hello");

vector v2(v.begin(),v.end());

vector v4(v);

vector v5(4);

二、以上是vector容器的简单介绍,下面将详细介绍它的其他功能:

1. 为了使用vector,必须在你的头文件中包含下面的代码:

#include

2. vector属于std命名域的,因此需要通过命名限定,可以在文件开头加上

using std::vector; 或者using namespace std;

或者直接在使用vector的代码前加前缀

std::vector myHouse;

3. vector提供如下函数或操作:

下面列举了部分常用的功能

// 定义一个vector

std::vector c;

// 可以使用的功能

c.assign(beg,end)将[beg; end)区间中的数据赋值给c

c.assign(n,elem)将n个elem的拷贝赋值给c

c.clear() 移除容器中所有数据。数组大小为0,内存不变

c.empty() 判断容器是否为空。为空返回1,否则返回0

c.erase(pos) 删除pos位置的数据//pos为指针,数组大小size减1,内存不变

c.erase(beg,end) 删除[beg,end)区间的数据// beg、end为指针,size减小,内存不变

c.front() 传回第一个数据。

c.back() 传回最后一个数据,不检查这个数据是否存在

c.insert(pos,elem)在pos位置插入一个elem拷贝,传回新数据位置

c.insert(pos,n,elem)在pos位置插入n个elem数据,无返回值

c.insert(pos,beg,end)在pos位置插入在[beg,end)区间的数据。无返回值。

c.pop_back() 删除最后一个数据。

c.push_back(elem) 在尾部加入一个数据。

c.resize(num) 重新设置该容器的大小

c.reserve(num) 重新设置预留空间的大小,功能类似resize,但有区别

c.size() 回容器中实际数据的个数。

c.begin() 返回指向容器第一个元素的迭代器

c.end() 返回迭代器中末端元素的下一个,指向一个不存在元素的指针

c.rbegin() 返回Vector尾部的逆迭代器

c.rend() 返回Vector起始的逆迭代器

==、!=、<、<=、>、>= 保持这些操作符惯有含义

c[n] 返回v中位置为n的元素,下标不能添加元素,只能操作存在的元素

c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range

c1.swap(c2)将c1和c2元素互换

swap(c1,c2)同上操作

c.~ vector ()销毁所有数据,释放内存,即:size()为0,内存capacity()为0

对于const vector只能用vector::const_iterator类型的指针访问

两个vectors被认为是相等的,如果:

1.它们具有相同的容量size() 与预留空间无关reserve()

2.所有相同位置的元素相等.

vectors之间大小的比较是按照词典规则

三、下面描述一下什么是迭代器

迭代器相当于指针,例如:

// 定义一个迭代器

std::vector::iterator p;

// 指向容器的首个元素

for(vector::iterator p= myVec.begin(); p!= myVec.end(); p++ )

例:

1.vector 的数据的存入和输出:

#include

#include

#include

using namespace std;

void main()

{

int i = 0;

vector v;

for( i = 0; i < 10; i++ )

{

v.push_back( i );//把元素一个一个存入到vector中

}

对存入的数据清空

for( i = 0; i < v.size(); i++ )//v.size() 表示vector存入元素的个数

{

cout << v[ i ] << " "; //把每个元素显示出来

}

cout << endl;

}

注:你也可以用v.begin()和v.end() 来得到vector开始的和结束的元素地址的指针位置。你也可以这样做:

vector::iterator iter;

for( iter = v.begin(); iter != v.end(); iter++ )

{

cout << *iter << endl;

}

2. 对于二维vector的定义。

1)定义一个10个vector元素,并对每个vector符值1-10。

#include

#include

#include

using namespace std;

void main()

{

int i = 0, j = 0;

//定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。

所以每一行的长度是可以变化的。之所以用到vector(0)是对vector初始化,否则不能对

相关文档
最新文档