wordpress 密码算法如何网站优化排名
文章目录
- 🚩前言
- 1、vector容器的概述
- 2、vector构造函数的使用
- 3、vector遍历方式
- 4、vector中Capacity相关接口
- 5、vector插入和删除的使用
🚩前言
前面描述了字符串string的相关知识,接下来描述第二个常用容器——vector,即顺序表。👇👇
1、vector容器的概述
- 简单来说,vector相当于C++中的数组,数组中可以用的操作,在vector中都有相应的接口,并且具有数组没有的功能,基于数组的数据结构实现自动管理内存的,方便灵活的序列容器。
2、vector构造函数的使用
首先了解vector可以支持的构造函数有哪些?下面是所具有的构造函数:
//构造函数的使用
void Test_vector_1()
{//构造一个空的容器vector<int> v1;//构造n个值为val的容器vector<int> v2(8,6);//使用迭代器构造一个容器,可以改变范围大小vector<int> v3(++v2.begin(), --v2.end());
}
调试结果
3、vector遍历方式
在vector中和string遍历方式一样的,都包括下标访问、迭代器以及范围for访问,接下来使用一下这些访问方式:
//遍历方式的使用
void Test_vector_2()
{//创建一个大小为10,值为6的容器vector<int> v1(10,6);//下标访问for (int i = 0; i < v1.size(); i++){cout << v1[i] << " ";}cout << endl;//迭代器vector<int>::iterator it = v1.begin();while (it != v1.end()){cout << *it << " ";++it;}cout << endl;//范围for遍历for (auto n : v1){cout << n << " ";}cout << endl;
}
4、vector中Capacity相关接口
通过reserve接口来了解:
//Capacity相关接口
void Test_vector_3()
{vector<int> v1(10,1);//先看原始空间大小cout <<"_size:"<< v1.size() << endl;cout << "_capacity:"<<v1.capacity() << endl;//申请更大空间v1.reserve(30);cout << "预留大于空间的,空间变大:" << endl;cout <<"_size:"<< v1.size() << endl;cout << "_capacity:"<<v1.capacity() << endl;cout << "预留比空间小的,空间不会缩容的:" << endl;v1.reserve(20);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;
}
resize()接口的作用
主要有两种:①resize的个数小于原本数据个数的时候,就相当于删除后面的数据内容,在vs上空间不会缩容(缩容和不缩容得看编译器平台);②若大于原本数据个数的时候,就是插入,当空间不够的时候就会扩容;
//resize()
void Test_vector_3()
{ vector<int> v1(10, 1);//先看原始空间大小cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "大于原有数据个数的时候,超过原有空间大小:" << endl;v1.resize(15,2);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "小于原有数据个数的时候,不会缩容:" << endl;v1.resize(5);cout << "_size:" << v1.size() << endl;cout << "_capacity:" << v1.capacity() << endl;for (auto n : v1){cout << n << " ";}cout << endl << endl;
}
5、vector插入和删除的使用
插入接口主要是:push_back()和insert(),删除就是:erase();
//插入和删除
void Test_vector_4()
{vector<int> v1;cout << "size:" << v1.size() << endl;cout << "capacity:" << v1.capacity() << endl;cout << endl;//尾插v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);v1.push_back(6);v1.push_back(7);v1.push_back(8);v1.push_back(9);v1.push_back(10);v1.push_back(11);cout << "尾插:" << endl;for (auto n : v1){cout << n << " ";}cout << endl;cout << "size:" << v1.size() << endl;cout << "capacity:" << v1.capacity() << endl;cout << endl;//固定插入cout << "首部插入:" << endl;v1.insert(v1.begin(),10);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "中间位置插入:" << endl;v1.insert(v1.begin()+4, 666);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "erase支持某一位置删除和区间删除:" << endl;cout << "删除第一个元素:"<<endl;v1.erase(v1.begin());for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "删除最后一个元素:" << endl;v1.erase(v1.end()-1);v1.erase(v1.begin());for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "区间删除:" << endl;v1.erase(v1.begin()+3,v1.begin()+5);for (auto n : v1){cout << n << " ";}cout << endl << endl;cout << "清空接口,不改变空间:clear()" << endl;v1.clear();cout <<"size:"<< v1.size() << endl;cout << "capacity:"<<v1.capacity() << endl;cout << endl;
}
常用常用接口就描述到此,不常见的可以通过下面链接了解:
vector容器官方文档介绍