关于动态数组vector的使用方法

STL 在头文件 <vector> 提供了一个可变长的数组 vector,它支持动态的插入、删除操作。

以下代码声明了一个 vector,它的每个元素类型为 int,初始元素数量为 0。

std::vector<int> v;

以下代码声明了一个 vector,它的每个元素类型为 int,初始元素数量为 n。

std::vector<int> v(n);

vector 提供 begin() 和 end(),分别获取指向第一个元素最后一个元素之后的迭代器。

以下代码对 v 中的所有元素以升序排序:

std::sort(v.begin(), v.end());

使用 size() 得到 vector 的元素数量,使用 resize() 重新指定 vector 的元素数量。

分别使用 push_back() 和 pop_back() 在 vector 的尾部加入或删除元素,这两个过程的时间复杂度为O(1)。

使用 insert() 在某个特定的位置插入一个元素,时间复杂度为O(n)。

使用 erase() 删除某个位置的元素,时间复杂度为O(n)。

#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
int main()
{
	v.push_back(23333);
	cout<<"length="<<v.size()<<" ";
	for(int i=0;i<v.size();i++)
	cout<<v[i]<<" ";         // v.size() = 1, v = { 23333 }
	cout<<endl;
	v.insert(v.begin()+0,43243);
	cout<<"length="<<v.size()<<" ";
	for(int i=0;i<v.size();i++)
	cout<<v[i]<<" ";        // v.size() = 2, v = { 43243, 23333 }
	cout<<endl;
	v.erase(v.begin()+1);
	cout<<"length="<<v.size()<<" ";
	for(int i=0;i<v.size();i++)
	cout<<v[i]<<" ";		// v.size() = 2, v = { 43243 }
	cout<<endl;
	v.pop_back();
	cout<<"length="<<v.size()<<" ";
	for(int i=0;i<v.size();i++)
	cout<<v[i]<<" ";		//v.size() = 0
	cout<<endl;
}

注意:在加入元素时,如果 vector 拥有的内存空间不足以存放欲加入的元素,则 vector 会申请一块新的内存,并将旧数据拷贝过去,这个过程通常花费 O(n)的时间。

猜你喜欢

转载自blog.csdn.net/qq_37347127/article/details/83690388
今日推荐