vector底层原理(二)
一、vector中reserve和resize的区别:
共同点:
- 不会改变原有元素
- vector的大小只增不减,所以,使得vector空间缩小的操作无效
不同点:
- reserve会增加vector的容量
- resize在增加容量的同时,将空闲位置填入默认值
用途:
- reserve用于避免多次内存分配(用reserve一次多分配些空间)
- resize用于确保操作符[]不会越界访问,因为resize将新增的空间填入默认值
二、vector的元素为什么不能是引用?
根本原因:引用是别名,不是对象,没有实际地址,不能创建引用的指针,不能创建引用的引用,因此不能通过操作符[]获取引用的引用
直接原因:引用没有独立的存储空间,因此无法作为 vector
内部的元素存储。vector
的存储机制要求每个元素都能独立存在和管理,这与引用的特性不符
推荐学习 https://xxetb.xetslk.com/s/p5Ibb