欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL中vector的用法

程序员文章站 2022-03-22 21:42:16
...
#include <unordered_map>
#include <vector>
#include <iostream>
using namespace std;

/*
vector<int> c;
vector常用方法:
1. c.push_back(elem) 在数组的最后添加一个数据
2. c.pop_back()      去掉数组中最后一个数据
3. c.empty()		 判断容器是否为空
4. c.erase(begin, end) 删除[begin, end)区间内的值,c.erase(pos),删除pos位置的数据。这里的begin,end都是迭代器(一种泛化的指针)
5. c.front           返回容器中第一个数据
6. c.insert(pos, elem)在pos位置处插入elem元素
7. c.clear()          移除容器中所有数据
8. c.resize(num)      重新设置容器的大小
9. c.size()           容器中实际元素的个数
10. c.begin() c.end() 分别返回容器第一个元素和最后一个元素的迭代器

需要注意:
vector每次申请内存的时候,都是在内存不够用了,重新申请一块原来内存两倍大的内存空间,再将原来的数据拷贝过来,但是在VS2015中,内存管理好像不是成倍增长的
*/

void Print(vector<int> t)
{
	for (int i = 0; i < t.size(); ++i)
	{
		cout << t[i] << endl;
	}
}

int main()
{
	vector<int> iVec;
	
	cout << "容器的大小为:" << iVec.size() << endl;
	cout << "容器的容量为:" << iVec.capacity() << endl;

	cout << "往容器中添加元素" << endl;
	for (int i = 0; i < 5; ++i) { iVec.push_back(10-i); }
	cout << "添加完成" << endl;

	cout << "使用迭代器遍历容器" << endl;
	auto iter = iVec.begin();
	while (iter != iVec.end())
	{
		cout << *iter << endl;
		iter++;
	}
	cout << "使用数组的形式遍历容器" << endl;
	for (int i = 0; i < iVec.size(); ++i)
	{
		cout << iVec[i] << endl;
	}

	cout << "删除末尾元素" << endl;
	iVec.pop_back();
	Print(iVec);

	cout << "判断容器是否为空" << endl;
	cout << iVec.empty() << endl;

	cout << "删除容器中指定区间的数据, iVec.begin()+3, iVec.end()" << endl;
	iVec.erase(iVec.begin()+3, iVec.end());
	Print(iVec);

	cout << "容器的第三个位置插入20,iVec.begin()+2, 20" << endl;
	iVec.insert(iVec.begin()+2, 20);
	Print(iVec);

	cout << "返回第一个元素" << endl;
	cout << iVec.front() << endl;


	return 0;
}


运行结果:

容器的大小为:0
容器的容量为:0
往容器中添加元素
添加完成
使用迭代器遍历容器
10
9
8
7
6
使用数组的形式遍历容器
10
9
8
7
6
删除末尾元素
10
9
8
7
判断容器是否为空
0
删除容器中指定区间的数据, iVec.begin()+3, iVec.end()
10
9
8
容器的第三个位置插入20,iVec.begin()+2, 20
10
9
20
8
返回第一个元素
10

相关标签: STL vector的使用