}
//resize 重新指定大小 ,若指定的更大,默认用0填充新位置,
//可以利用重载版本替换默认填充
v1.resize(15,10);
printVector(v1);
//resize 重新指定大小 ,若指定的更小,超出部分元素被删除
v1.resize(5);
printVector(v1);
}
int main() {
test01();
system("pause");
return 0;
}
总结:
* 判断是否为空 — empty
* 返回元素个数 — size
* 返回容器容量 — capacity
* 重新指定大小 — resize
#### []( )3.2.5 vector插入和删除
**功能描述:**
* 对vector容器进行插入、删除操作
**函数原型:**
* `push_back(ele);` //尾部插入元素ele
* `pop_back();` //删除最后一个元素
* `insert(const_iterator pos, ele);` //迭代器指向位置pos插入元素ele
* `insert(const_iterator pos, int count,ele);`//迭代器指向位置pos插入count个元素ele
* `erase(const_iterator pos);` //删除迭代器指向的元素
* `erase(const_iterator start, const_iterator end);`//删除迭代器从start到end之间的元素
* `clear();` //删除容器中所有元素
**示例:**
#include
void printVector(vector& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
//插入和删除
void test01()
{
vector<int> v1;
//尾插
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
printVector(v1);
//尾删
v1.pop_back();
printVector(v1);
//插入
v1.insert(v1.begin(), 100);//在第一个位置前插入100
printVector(v1);
v1.insert(v1.begin(), 2, 1000);//在第一个位置前插入2个1000
printVector(v1);
//删除
v1.erase(v1.begin());//删除第一个位置的元素
printVector(v1);
//清空
v1.erase(v1.begin(), v1.end());//删除区间内的元素
v1.clear();//清空容器
printVector(v1);
}
int main() {
test01();
system("pause");
return 0;
}
总结:
* 尾插 — push\_back
* 尾删 — pop\_back
* 插入 — insert (位置迭代器)
* 删除 — erase (位置迭代器)
* 清空 — clear
#### []( )3.2.6 vector数据存取
**功能描述:**
* 对vector中的数据的存取操作
**函数原型:**
* `at(int idx);` //返回索引idx所指的数据
* `operator[];` //返回索引idx所指的数据
* `front();` //返回容器中第一个数据元素
* `back();` //返回容器中最后一个数据元素
**示例:**
#include
void test01()
{
vector<int>v1;
for (int i = 0; i < 10; i++){
v1.push_back(i);//尾压元素
}
for (int i = 0; i < v1.size(); i++){
cout << v1[i] << " ";//用[]访问
}
cout << endl;
for (int i = 0; i < v1.size(); i++){
cout << v1.at(i) << " ";//用at()访问
}
cout << endl;
cout << "v1的第一个元素为: " << v1.front() << endl;
cout << "v1的最后一个元素为: " << v1.back() << endl;
}
int main() {
test01();
system("pause");
return 0;
}
总结:
* 除了用迭代器获取vector容器中元素,\[ \]和at也可以(3种获取数据的方式)
* front返回容器第一个元素
* back返回容器最后一个元素
#### []( )3.2.7 vector互换容器
**功能描述:**
* 实现两个容器内元素进行互换
**函数原型:**
* `swap(vec);` // 将vec与本身的元素互换
**示例:**
#include
void printVector(vector& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void test01(){
vector<int>v1;
for (int i = 0; i < 10; i++){
v1.push_back(i);
}
printVector(v1);
vector<int>v2;
for (int i = 10; i > 0; i--){
v2.push_back(i);
}
printVector(v2);
//互换容器
cout << "互换后" << endl;
v1.swap(v2);
printVector(v1);
printVector(v2);
}
//实际用途,收缩内存
void test02(){
vector<int> v;
for (int i = 0; i < 100000; i++) {
v.push_back(i);
}
cout << "v的容量为:" << v.capacity() << endl;//13万多
cout << "v的大小为:" << v.size() << endl;//100000
v.resize(3);
cout << "v的容量为:" << v.capacity() << endl;//13万多
cout << "v的大小为:" << v.size() << endl;//3
//收缩内存
vector<int>(v).swap(v);
//vetor<int>(v) 匿名对象,按照v的大小创建空间大小,当前行结束编译器自动释放内存
cout << "v的容量为:" << v.capacity() << endl;//3
cout << "v的大小为:" << v.size() << endl;//3
}
int main() {
test01();
test02();
system("pause");
return 0;
}
总结:swap可以使两个容器互换,可以达到实用的收缩内存效果
#### []( )3.2.8 vector预留空间
**功能描述:**
* 减少vector在动态扩展容量时的扩展次数,提高时效
**函数原型:**
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/ae680a1a1e6fc6f07fb4bdf658e12de2.png)
![img](https://img-blog.csdnimg.cn/img_convert/12f4df979bdc7c393c43346e26b53210.png)
![img](https://img-blog.csdnimg.cn/img_convert/e884796768e2ad48e3b5d765164691b4.png)
![img](https://img-blog.csdnimg.cn/img_convert/95767f2083297e44a25148d462c65181.png)
![img](https://img-blog.csdnimg.cn/img_convert/d8825ab9a6c850db0cb159b91da667ea.png)
![img](https://img-blog.csdnimg.cn/img_convert/affc091060bdb06e42fd3274e6888d85.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/afd1eac92c145691a654ff5fc553c9cc.png)
## 最后
**目前已经更新的部分资料:**
![](https://img-blog.csdnimg.cn/img_convert/eb55a659e3089cc9cc04eaa89fc5445d.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/b3375edd16dad52c4cecf416e1540668.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/44b5a48ad847aa59d58c0fd0d5cbcedb.webp?x-oss-process=image/format,png)
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/ff67b9b044a14daa39c5fdaa70b8a881.png)
验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
[外链图片转存中...(img-evfSOLWQ-1712628271909)]
## 最后
**目前已经更新的部分资料:**
[外链图片转存中...(img-xj96tUph-1712628271909)]
[外链图片转存中...(img-wZ0wPFgP-1712628271909)]
[外链图片转存中...(img-yfsNW0dy-1712628271910)]
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-e6T8NnK1-1712628271910)]