C++笔记 5(1),阿里P8大佬亲自讲解

}



//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)]
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值