C++_vector使用规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++中的vector使用规范
一、概述
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。
Vector初始化
vector
vector
vector
vector
例如:
vector
vector
vector
vector
vector
二、以上是vector容器的简单介绍,下面将详细介绍它的其他功能:
1. 为了使用vector,必须在你的头文件中包含下面的代码:
#include
2. vector属于std命名域的,因此需要通过命名限定,可以在文件开头加上
using std::vector; 或者using namespace std;
或者直接在使用vector的代码前加前缀
std::vector
3. vector提供如下函数或操作:
下面列举了部分常用的功能
// 定义一个vector
std::vector
// 可以使用的功能
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
对于const vector
两个vectors被认为是相等的,如果:
1.它们具有相同的容量size() 与预留空间无关reserve()
2.所有相同位置的元素相等.
vectors之间大小的比较是按照词典规则
三、下面描述一下什么是迭代器
迭代器相当于指针,例如:
// 定义一个迭代器
std::vector
// 指向容器的首个元素
for(vector
例:
1.vector 的数据的存入和输出:
#include
#include
#include
using namespace std;
void main()
{
int i = 0;
vector
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
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