网站建设学什么,工信部信息备案网站,欧莱雅旗下品牌,wordpress 和织梦vector容器#xff1a;
1.vector基本概念#xff1a;
vector功能与数组类似#xff0c;与数组不同的是#xff0c;vector可以动态扩展。
2.vector构造函数#xff1a;
vectorT v; //默认构造函数#xff0c;创建数据类型T的容器
ve…vector容器
1.vector基本概念
vector功能与数组类似与数组不同的是vector可以动态扩展。
2.vector构造函数
vectorT v; //默认构造函数创建数据类型T的容器
vector(v.begin(), v.end()); //将v[begin(), end()) 区间中的元素拷贝给本身
vector(n, elem); //将n个elem拷贝给本身
vector(const vector vec); //拷贝构造函数 vectorint v1;vectorint v2(v1.begin(), v1.end());vectorchar v3(10, a);vectorint v4(v1); 3.vector赋值操作
vector operator(const vector vec); //等号重载
assign(beg, end); //将beg, end之间的数据拷贝赋值给本身
assign(n, elem); //将n个elem拷贝赋值给本身 vectorint v2;v2 v1;vectorint v3;v3.assign(v1.begin(), v1.end());vectorint v4;v4.assign(10, 100); 4.vector容量和大小
empty( ); //判断容器是否为空
capacity( ); //容器的容量
size( ); //容器中元素的个数
resize(int num); //重新指定容器的长度为num容器变长以默认值填充新位置容器变 //短超出的元素被删除
resize(int num, elem); //重新指定容器的长度为num容器变长以elem填充新位置容器变短 //超出的元素被删除
void test03()
{vectorintv1;for (int i 0; i 10; i){v1.push_back(i);}if (v1.empty())//为真代表容器为空{cout v1为空 endl;}else{cout v1不为空 endl;cout v1容量为 v1.capacity() endl;cout v1大小为 v1.size() endl;}PrintVector(v1);//重新指定大小v1.resize(15);PrintVector(v1);//默认值为0 v1.resize(5);PrintVector(v1);//后面的被删掉了
} 5.vector插入和删除 void test04()
{vectorintv1;v1.push_back(10);v1.push_back(20);v1.push_back(30);PrintVector(v1);//10 20 30v1.pop_back();//10 20 尾部删除v1.insert(v1.begin(), 100);//100 10 20 指定位置插入v1.insert(v1.begin(), 2, 50);//50 50 100 10 20 指定位置插入v1.erase(v1.begin());//50 100 10 20 指定位置删除v1.erase(v1.begin(), v1.end()); //指定范围删除v1.clear();//清空所有数据
} 6.vector数据存取
at(int idx); //返回idx所指的数据
operator[ ]; //下标重载返回idx所指的数据
front( ); //返回第一个数据
back( ); //返回最后一个数据
void test05()
{vectorintv1;for (int i 0; i 10; i){v1.push_back(i);}cout v1.front() v1.at(1) v1[2] v1.back() endl;//0 1 2 9
} 7.vector互换容器
功能实现两个容器内元素的互换。
swap(vec); //将vec与本身的元素互换
v1.swap(v2);//交换两个容器的元素
用途巧用swap可以收缩内存空间
resize缩小空间后只是将size减小了capacity并没有减小造成了空间浪费。 解决方法
vectorint(v1).swap(v1);
原理vectorint(v1) --- 匿名对象按照v的size开辟大小 .swap(v1) --- 将匿名对象和v1交换
8.vector预留空间
功能减少vector在动态扩展内存时的扩展次数。
reserve(int len); //容器预留len个元素长度预留位置不初始化元素不可访问。
void test07()
{vectorintv;v.reserve(100000);int num 0;int* p NULL;for (int i 0; i 100000; i){v.push_back(i);//查看动态扩展的次数if (p ! v[0]){p v[0];num;}}cout num endl;//1
}