C++STL之vector详解

一、STL简介 

       STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。
       C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。

       STL 从根本上讲是“容器”的集合,也是组件的集合。容器包括 list、vector、set、map 等;组件包括迭代器等。STL 的目的是标准化组件。

        STL 是 C++ 的一部分,不用额外安装,被内建在支持 C++ 的编译器中。
        STL 的算法是标准算法,其实现了将已经定义好的算法应用在容器的对象上。

更多STL介绍请看STL是什么

二、C++ vector简介

       vector 容器是包含 T 类型元素的序列容器,和 array 容器相似,不同的是 vector 容器的大小可以自动增长,从而可以包含任意数量的元素;因此类型参数 T 不再需要模板参数 N。只要元素个数超出 vector 当前容量,就会自动分配更多的空间。只能在容器尾部高效地删除或添加元素
        vector 容器可以方便、灵活地代替数组。在大多数时候,都可以用 vector 代替数组存放元素。只要能够意识到,vector 在扩展容量,以 及在序列内部删除或添加元素时会产生一些开销;但大多数情况下,代码不会明显变慢。 为了使用 vector 容器模板,需要在代码中包含头文件 #include

         时间复杂度:该容器随机存取任何元素都能在常数时间O(1)完成,在尾端增删元素具有最佳的性能(大部分时间是常数时间,即在不需要重新分配存储空间的情况下。在一些特殊的情况下需要的时间是O(n),比如当所需要的存储空间超过了之前动态分配的空间,这时候就需要重新分配存储空间,需要进行一个数组的拷贝工作)当在vector中间或者头部插入或者删除元素所需要的时间复杂度为O(n)因为我们需要将后面的元素一次向后移动一个位置。

三、C++ vector的常用方法

#include
#include
using namespace std;

//定义一个输出vector模板 
/*为了方便打印不同类型的vector,如果vector的类型比较少
可以使用for循环打印,例如定义一个 vector num;
输出可以用:
    //输出num中的内容 size():返回Vector元素数量的大小 
	for(int i=0;i
void printVector(T s,T e){
	for(;s != e;++s){
		cout<<*s<<" ";
	}
	cout< num;    //生成存放 int 型元素的 vector 容器
	cout<<"赋值之前num的容量:"< number(a,a+6);
	printVector(number.begin(),number.end());
	
	//string A[4] = {"str1","str2","str3","str4"};
	//vector str(A,A+4);
	
	//str有4个元素,全部初始化为 "abc" 
	vector str(4,"abc");
	printVector(str.begin(),str.end()); 
	
	//向容器中添加元素 
	for(int i=0;i<10;i++){
		num.push_back(i);	//push_back():在Vector最后添加一个元素
	}
	cout<<"赋值之后num的容量:"<

运行结果:

C++STL之vector详解_第1张图片

 四、C++ vector的所有方法(更加详细的内容请参考C++的API:https://en.cppreference.com/w/cpp/container/vector

C++STL之vector详解_第2张图片

C++STL之vector详解_第3张图片

C++STL之vector详解_第4张图片

你可能感兴趣的:(C++学习笔记)