
比如int a[] = { 0,1,3,5,6,4,2.... }
vector<int>v( a, a + sizeof( a ) / sizeof( a[0] ) )
2、动态添加就只有用push_back了
可以用resize预置vector的容量,这样就能免除push_back由于空间超过默认分配的定量内存时而重分配更大的一块新空间并把原内容重新拷过去所带来的效率损失,vector内部自动维护了一块定量的内存,这个空间可以用capacity()方法查看。
v.insert(v.begin(),elem) //在v的最前面添加一个元素用例:
#include <vector>
int main(int argc, char* argv[])
{
vector<int>v
v.push_back(5)
v.push_back(6)
v.insert(v.begin(), 4)
for (unsigned int i = 0i <v.size()++i)
{
printf("%d ", v[i])
}
system("pause")
return 0
}
v.insert(pos,elem)
在pos位置插入一个elem拷贝,传回新数据位置。
v.insert(pos,n,elem)
在pos位置插入n个elem数据。无返回值。
v.insert(pos,beg,end)
在pos位置插入在[beg,end)区间的数据。无返回值。
vector容器类型vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。
vector的构造
函数原型:
template<typename T>
explicit vector()// 默认构造函数,vector对象为空
explicit vector(size_type n, const T&v = T()) // 创建有n个元素的vector对象
vector(const vector&x)
vector(const_iterator first, const_iterator last)
注:vector容器内存放的所有对象都是经过初始化的。如果没有指定存储对象的初始值,那么对于内置类型将用0初始化,对于类类型将调用其默认构造函数进行初始化(如果有其它构造函数而没有默认构造函数,那么此时必须提供元素初始值才能放入容器中)。
举例:
vector<string>v1// 创建空容器,其对象类型为string类
vector<string>v2(10)// 创建有10个具有初始值(即空串)的string类对象的容器
vector<string>v3(5, "hello")// 创建有5个值为“hello”的string类对象的容器
vector<string>v4(v3.begin(), v3.end()) // v4是与v3相同的容器(完全复制)
vector的 *** 作(下面的函数都是成员函数)
bool empty() const // 如果为容器为空,返回true;否则返回false
size_type max_size() const // 返回容器能容纳的最大元素个数
size_type size() const // 返回容器中元素个数
size_type capacity() const // 容器能够存储的元素个数,有:capacity() >= size()
void reserve(size_type n)// 确保capacity() >= n
void resize(size_type n, T x = T()) // 确保返回后,有:size() == n;如果之前size()<n,那么用元素x的值补全。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)