STL中vector的构造函数
vector是由STL提供的一种序列式容器,它的底层其实就是一个动态数组。如要使用vector,需要#include<vector>。vector的特点: 因为支持下标访问,所以能高效的进行随机存取,时间复杂度为O(1); 由于内存空间是连续的,在进行非尾插和尾删的操作时,会进行大量的数据搬移操作,时间复杂度为O(n)。
·
vector是由STL提供的一种序列式容器,它的底层其实就是一个动态数组。如要使用vector,需要#include<vector>。
vector的特点:
因为支持下标访问,所以能高效的进行随机存取,时间复杂度为O(1);
由于
内存空间是连续的,在进行非尾插和尾删的操作时,会进行大量的数据搬移操作,时间复杂度为O(n)。
当数组空间不足时,会重新申请一段连续的空间并进行内存拷贝。
接下来主要介绍vector中接口的说明和使用。
vector的4种构造函数:
1、vector( const Allocator& = Allocator() );
2、vector( size_type n,constT& value = T(), const Allocator& = Allocator() );
3、template <class InputIterator>
vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
4、vector ( const vector<T,Allocator>& x );
说明
:
除了第4个构造函数,其他的几个构造函数都有一个缺省参数Allocator,它是用于指定要使用的空间配置器的,STL提供的默认的空间配置器,我们基本不用管这个参数,除非是我们自己实现了一个空间配置器,然后希望使用我们自己写的空间配置器。
各个构造函数的使用:
vector ( const vector<T,Allocator>& x );
拷贝构造函数,根据一个vector对象构建一个新的vector对象
注意,拷贝有深拷贝和浅拷贝两种方式。
一般在创建一个新的对象时使用的就是深拷贝,即元素值相同,地址空间不同,而在使用一个vector对象进行值传递传参时,使用的就是浅拷贝,即形参是实参的一份临时拷贝。这往往是会出问题的,所以建议在使用vector作为参数时,尽量传引用。
更多推荐
已为社区贡献1条内容
所有评论(0)