STL(常用的STL容器一)

常用的STL容器(每一个容器就是一个类模板,大致分为顺序容器,适配器容器,关联容器。
1.顺序容器(按照线性次序的位置存储数据,即第一,第二,,第三,依次类推,常用的顺序容器是vector,string,deque,list).
(1)向量容器(vector)
|v[0]|v[1]|v[2]…|v[n-1]|[增长的空间] |
表头 表尾
以上为vector容器v的存储方式
若初始分配空间不够,当超过分配空间大小时会重新分配更大的空间(通常按照两倍扩展,此时需要大量的元素复制,从而增加了性能开销。
定义vector容器的几种方式如下:

vector<int>v1;//定义元素为int的向量为v1
vector<int>v2(10);//指定向量v2的初始大小为10个int元素
vector<double>v3(10,1.23);//指定v3的10个初始元素的初值为1.23
vector<int>v4(a,a+5);//用数组a[0...4]共5个元素初始化v4

vector提供了一系列的成员函数,vector的主要成员函数如下:
empty():判断当前向量是否为NULL。
size():返回当前向量容器中的实际元素个数。
[]:返回指定下标的元素
reverse(n):为当前向量预分配n个元素的存储空间。
capacity():返回当前向量容器在重新进行内存分配以前所能容纳的元素个数。
resize(n):调整当前向量的容器大小,使其能容纳n个元素。
push_back():在当前向量容器尾部添加一个元素。
insert(pos,elem):在pos位置插入元素elem,即将元素elem插入到迭代器pos指定的元素之前。
front():获取当前向量容器的第一个元素。
back():获取当前向量容器的最后一个元素。
erase():删除当前向量容器中某个迭代器或者迭代器区间制定的元素。
clear():删除当前向量容器中的所有元素。
begin():该函数的两个版本返回iterator或const_iterator,引用容器的第一个元素。
end():该函数的两个版本返回iterator或const_iterator,引用容器的最后一个元素后买你的一个位置。
rbegin():该函数的两个版本返回reverse_iterator或const_reverse_iterator,引用容器的最后一个元素。
rend():该函数的两个版本返回reverse_iterator或const_reverse_iterator,引用容器的第一个元素前面的一个位置。
eg一个程序吧,说明vector容器的应用:

 #include<vector>
using namespace std;
void main()
{
	vector<int>myv;//定义vector容器myv
	vector<int>::iterator it;// 定义myv的正向迭代器
	myv.push_back(1);//在myv末尾添加元素1
	it = myv.begin();//it迭代器指向开头元素1
	myv.insert(it, 2);//在it指向的元素之前插入元素2
	myv.push_back(3);//在myv末尾添加元素3
	myv.push_back(4);//在myv末尾添加元素4
	it=myv.end();//it迭代器指向尾元素4的后面
	it--;
	myv.erase(it);//删除元素4
	for (it = myv.begin(); it != myv.end(); ++it)
		printf("%d", *it);
	printf("\n");
}
  输出结果为: 2  1  3

猜你喜欢

转载自blog.csdn.net/qq_42403069/article/details/86132973