【C++ STL】容器Vector的简单概念和用法

一、vector的概念
模板类vector类似于string类,本质上也是一种动态数组。它是使用new运算符动态创建数组的替代品。实际上,vector类确实用new和delete运算符来管理内存(计算机自动完成)。因此,vector类所创建的对象都存储在自由存储区即 free store。

二、使用vector前需要注意的事项
1)要使用vector类来创建vector对象,必须包含头文件vector;
2)vector包含在命名空间std中,using namespace std或std::vector;
3)vector类使用不同的语法来指定元素数目。

#include 
#include 
using namespace std;
int main()
{
	vector vi; //create a zero-size array of int
	int n;
	cin>>n;
	vector vt(n); //create an array of n doubles
	return 0;
}

三、如何对vector容器中的元素进行简单操作
由于运算符 [ ] 在vector类中被重载,因此创建vector的对象后,可以使用low-level array即通常数组的表示法来访问vector容器中的各个元素。
当然,所有的STL容器都提供了一些基本方法,如size()——返回容器中元素的数目;swap()——交换两个容器的内容;begin()——返回一个指向容器第一个元素的迭代器;end()——返回一个指向容器尾的迭代器。
说到对容器中的元素进行提取和简单操作,就不得不提为容器而生的迭代器——iterator
本质上,迭代器是一种指针,它让STL能够为各种不同的容器种类提供统一的接口。每个容器类都定义了合适的迭代器,此处我们说的vector迭代器的类型是一个名为iterator的typedef,其作用域为整个类。例如:我们要为vector的double类型声明一个迭代器

vector::iterator pd; //pd is an iterator

此处我们假设scores是一个vector的double类型的对象,则可以使用迭代器pd执行以下的操作

vector scores;
pd=scores.begin();
*pd=2.23; //assign 22.3 to *pd
++pd; //make pd point to the next element
//遍历整个容器中的内容
for(pd=scores.begin();pd!=scores.end();pd++)
	cout<<*pd<

此外,还有puch_back(),erase()和insert()三个函数能够对vector对象进行操作
1)puch_back()函数将元素添加到矢量的末尾
2)erase()函数删除矢量中给定区间内的元素。它接受两个迭代器参数,他们确定了要删除的区间。如scores.erase(scores.begin();scores.begin()+2);
3)insert()函数接受三个迭代器参数,第一个参数指定了新元素的插入位置,第二和第三个参数定义了被插入的区间

你可能感兴趣的:(C/C++)