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

c++中vector容器的基本操作

程序员文章站 2022-03-22 22:17:10
...

什么是vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,简单的理解就是一个可以动态变化的数组。
vector的容量是随着你放入元素的数量而动态变化的。但是其只会增长而不是缩小

基本操作
在使用容器是要先写好头文件#include
构造容器
以int类型的为例子

void test01() {
	vector<int> v1;//创建一个空容器
	int arr[] = { 1,2,3,4,5,6,7,8 };
	vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));//创建一个容器用arr中的元素填充
	vector<int>v3(v2.begin(), v2.end());//使用迭代器,用v2的区间当做新容器的元素。
	vector<int>v4(v3);//拷贝构造函数,创建一个一模一样的容器
	pr(v4);

}

常用的赋值操作

void test02() {
	int arr[] = { 10,20,30,40 };
	vector<int>v1(arr, arr + sizeof(arr) / sizeof(int));
	vector<int>v2;
	v2.assign(v1.begin(), v1.end());//拷贝
	//重载
	vector<int>v3;
	v3 = v2;
	int arr1[] = { 100,200,300,400 };
	vector<int>v4(arr1, arr1 + sizeof(arr1) / sizeof(int));
	v4.swap(v1);
	pr(v4);

}

size与capacity
size是返回该容器中的元素个数,而capacity则是返回该容器的容量,他们的区别就好像是杯子的大小和杯中水的体积一样

void test03() {
	int arr[] = { 1,2,3,4,5,6,7,8 };
	vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));
	cout << v2.size();//元素个数  判断是否为空用empty
	v2.resize(5);//改变容器内元素的个数,多余的会删除掉,如果比以前变大了默认添加0。不想用默认可以resize(10,想要的值),而且只能改变元素个数,并不能改变容器容量
	v2.capacity();//返回容器的容量,与size不同的是size为容器里有多少元素,而capacity为容器的大小
    vector<int>().swap(v2);//如果向缩小容量可以使用swap这种方法,让v2和匿名空间两者交换指针的指向,这种方法也相当于是释放了空间
	v2.front();//返回容器中第一个元素
	v2.back();//返回容器中最后一个元素 ,他们与begin和end不同的地方在于begin和end返回的是迭代器

}

插入和删除操作

void test04() {
	vector<int>v;
	v.push_back(10);
	v.push_back(20);
	//头插法 ,使用迭代器
	v.insert(v.begin(), 30);
	v.insert(v.end(), 40);
   //删除
	v.erase(v.begin());//单个删除,删除第一个位置
	v.erase(v.begin(), v.end());//删除一个区间
	v.clear();//清空
}

reserve和resize的区别
//reserve是预留空间的,如果一开始想好了容器的大小可以直接用reserve去定义。

遍历

void pr(vector<int>v) {
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << endl;
	}
}

vector的优点:

  1.   可以使用下标访问个别的元素
    
  2.   迭代器可以按照不同的方式遍历容器
    
  3.   可以在容器的末尾增加或删除元素
    
相关标签: c++ stl