C++基础面试题, C++ 中 vector 的原理?resize 和 reserve 的区别是什么?size 和 capacity 的区别?
C++基础面试题, C++ 中 vector 的原理?resize 和 reserve 的区别是什么?size 和 capacity 的区别?
QA
Step 1
Q:: C++
中 vector 的原理是什么?
A:: C++
中的 vector
是一种动态数组,能够自动管理内存并根据需要扩展大小。vector
内部维护一个指向动态分配的数组的指针,包含当前元素个数的 size
和分配的内存空间大小 capacity
。当 size
达到 capacity
时,vector
会重新分配更大的内存空间,并将现有元素拷贝到新的内存地址,从而实现扩展。
Step 2
Q:: resize 和 reserve 的区别是什么?
A:: resize
是用来调整 vector
的大小,使其包含指定数量的元素。如果新的大小比当前的 size
大,vector
会填充额外的元素。如果比当前小,则会移除多余的元素。而 reserve
则是用来预留内存,它只影响 vector
的 capacity
,不会改变 size
,用于避免频繁的内存重新分配操作。
Step 3
Q:: size 和 capacity 的区别是什么?
A:: size
是指 vector
当前包含的元素个数,而 capacity
则表示 vector
当前分配的内存空间可以容纳的最大元素个数。size
永远小于或等于 capacity
。当 size
达到 capacity
时,如果再插入元素,vector
就会扩展内存空间。
用途
这些问题涉及 C`++` 中 `vector` 的内部机制,这是因为在实际开发中,`vector` 是使用最为广泛的容器之一。了解其工作原理有助于写出高效的代码,尤其是在处理大数据量或对性能要求较高的系统时。面试中考察这些内容是为了确保候选人能够合理地选择并使用合适的容器,理解和优化内存管理,以及掌握如何避免不必要的性能开销。\n相关问题
🦆
C++ 中 vector 是如何扩展内存的?▷
🦆
C++ 中 vector 的迭代器在 resize 之后是否仍然有效?▷
🦆
C++ 中使用 vector 时如何减少内存重新分配的次数?▷
🦆
除了 vector 之外,C++ 中常用的容器还有哪些?▷