以下是关于vector容器的总结
1、构造容器
2、容器赋值
3、获取容量capacity和大小size
4、插入和删除
5、数据存取
6、互换容器和预留空间
#include <iostream>
#include <vector>
using namespace std;
// vector数据结构和数组非常相似,也称为单端数组
// vector和普通数组的区别:数组是静态空间,vector可以动态扩展
// vector容器的迭代器是支持 随机访问 的迭代器
void printVector(vector<int> &v)
{
for(vector<int>::iterator it = v.begin(); it!=v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// vector的几种构造方式
void test01()
{
// 默认构造
vector<int> v1;
for(int i=0; i<10; i++)
{
v1.push_back(i);
}
printVector(v1);
// 通过区间方式进行构造
vector<int> v2(v1.begin(), v1.end());
printVector(v2);
// 拷贝构造
vector<int> v3(v2);
printVector(v3);
}
// vector的赋值
void test02()
{
// 1 等号赋值
vector<int> v1,v2;
for(int i=0; i<10; i++)
{
v1.push_back(i);
}
v2 = v1;
printVector(v2);
}
// vector容量和大小
void test03()
{
vector<int> v1;
bool flag = v1.empty();
cout << "flag = " << flag << endl;
for(int i=0; i<5; i++)
{
v1.push_back(i);
}
flag = v1.empty();
cout << "flag = " << flag << endl;
int capacity = v1.capacity();
cout << "capacity = " << capacity << endl;
int size = v1.size();
cout << "size = " << size << endl;
// resize(size, num) 重新定义容器的大小,多余的位置用num来填充
}
// vector插入和删除
void test04()
{
// 1 push_back(ele) & pop_back(ele)
vector<int> v;
for(int i = 0; i<10; i++)
{
v.push_back(i);
}
// 2 insert(const_iterator pos, ele) 迭代器指向位置Pos插入元素ele
v.insert(v.begin()+2, 10);
printVector(v);
// 3.1 erase(const_iterator pos) 删除迭代器指向位置的元素
v.erase(v.begin()+2);
printVector(v);
// 3.2 erase(const_iterator start, const_iterator end) 删除迭代器从strat到end之间的元素
v.erase(v.begin()+3, v.begin()+6);
printVector(v);
// 4 clear()
v.clear();
printVector(v);
}
// vector数据存取
void test05()
{
vector<int> v;
for(int i = 0; i<10; i++)
{
v.push_back(i);
}
// 1 v.at(int idx)
cout << "v[2] = " << v.at(2) << endl;;
// 2 operator[] -> v[2]
cout << "v[2] = " << v[2] << endl;
// 3 front() 返回容器中的第一个数据
cout << "v[0] = " << v.front() << endl;
// 4 back() 返回容器中的最后一个数据
cout << "v[9] = " << v.back() << endl;
}
// vector互换容器 and 预留空间
void test06()
{
// 实现两个容器内元素进行交换
// 函数原型:swap(vec);
vector<int> v1,v2;
for(int i = 0; i<10; i++)
{
v1.push_back(i);
}
for(int i=0; i<5; i++)
{
v2.push_back(i+2);
}
v1.swap(v2);
printVector(v1);
printVector(v2);
// reserve(int len);
// 容器预留len个元素长度,预留位置不初始化,元素不可访问
// 减少动态扩展内存的次数
}
int main(int argc, char **argv)
{
// 1 构造
cout << "1 构造" << endl;
test01();
cout << endl;
// 2 赋值
cout << "2 赋值" << endl;
test02();
cout << endl;
// 3 容量和大小
cout << "3 容量和大小" << endl;
test03();
cout << endl;
// 4 插入和删除
cout << "4 插入和删除" << endl;
test04();
cout << endl;
// 5 数据存取
cout << "5 数据存取" << endl;
test05();
cout << endl;
// 6 互换容器
cout << "6 互换容器" << endl;
test06();
cout << endl;
return 0;
}