C++ STL 之动态数组vector

C++中的vector是一个可以改变大小的数组,当解题时无法知道自己需要的数组规模有多大时可以用vector来达到最大节约空间的目的。使用时需要包含vector头文件。

C++中定义一维动态数组:

vector<int> a;  //int为该动态数组的元素数据类型,可以为string、double等

C++中定义二维动态数组:

vector<int*> a; //三维数据类型为int**,以此类推。

vector的基本操作:

1、push_back(x) 在数组的最后添加元素x

2、pop_back() 删除最后一个元素,无返回值

3、at(i) 返回位置i的元素

4、begin() 返回一个迭代器,指向第一个元素

5、end() 返回一个迭代器,指向最后一个元素的下一个位置

6、front() 返回数组头的引用

7、capacity(x) 为vector分配空间

8、size() 返回数组大小

9、resize(x) 改变数组大小,如果x比之前分配的空间大,则自动填充默认值

10、insert 插入元素 ①a.insert(a.begin(),10); 将10插入到a的起始位置前 ②a.insert(a.begin(),3,10) 将10插入到数组位置的0-2处

11、erase 删除元素 ①a.erase(a.begin()); 将起始位置的元素删除。 ②a.erase(a.begin(),begin()+2); 将0~2之间的元素删除 

12、rbegin() 返回一个逆序迭代器,它指向最后一个元素

13、rend() 返回一个逆序迭代器,它指向的第一个元素前面的位置

14、clear()清空所有元素
 

例子:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
	vector<int> a;
	vector<int> b;

	for (int i = 0; i < 10; i++)//向数组a依次添加0-9
	{
		a.push_back(i);
	}

	a.swap(b);      //将数组a元素与数组b元素交换

	cout << a.size() << " " << b.size() << endl;    //此时应当输出 0 10

	for (vector<int>::iterator it = b.begin(); it != b.end(); it++)//从第一个元素开始遍历数组元素
	{
		cout << *it << " ";     //依次输出0-9
	}
	cout << endl;

	b.erase(b.begin() + 1);     //删除位置1的元素,即元素1.
	cout << b.size() << endl;   //由于删除了一个元素,此时输出应当为8

	for (vector<int>::reverse_iterator rit = b.rbegin(); rit != b.rend(); ++rit)//逆向输出数组元素
	{
		cout << *rit << " ";    //应当输出9 8 7 6 5 4 3 2 0
	}
	cout << endl;

	b.resize(9);    //将数组空间设定为9,相当于比之前多了1个位置
	b.push_back(20);//在尾部添加元素20

	for (vector<int>::iterator it = b.begin(); it != b.end(); it++)
	{
		cout << *it << " ";  //应当输出0 2 3 4 5 6 7 8 9 20
	}
	
	return 0;
}
发布了36 篇原创文章 · 获赞 47 · 访问量 2161

猜你喜欢

转载自blog.csdn.net/weixin_43699840/article/details/104576438