MST

星途 面试题库

面试题:C++中vector的容量和大小相关问题

在C++的STL中,vector有capacity()和size()两个成员函数,请阐述它们的区别。假设你有一个vector<int> v,如何在不改变其元素的情况下,确保它至少有足够容纳100个新元素的空间而不重新分配内存?
18.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. capacity()size()的区别
    • size():返回vector中当前存储的元素个数。它表示实际存储在vector中的对象数量。例如,如果vector<int> v = {1, 2, 3},那么v.size()将返回3。
    • capacity():返回vector在重新分配内存之前可以容纳的元素个数。vector的容量是指在不重新分配内存的情况下它能够容纳的最大元素数量。初始时,capacity()可能大于size(),当size()增长到等于capacity()时,再添加新元素,vector会重新分配内存,通常会将容量翻倍(具体实现可能因编译器而异)。
  2. 确保vector至少有足够容纳100个新元素的空间而不重新分配内存: 可以使用reserve函数,代码如下:
#include <iostream>
#include <vector>

int main() {
    std::vector<int> v;
    // 假设v当前已有一些元素
    v.reserve(v.size() + 100);
    return 0;
}

在上述代码中,reserve函数确保vector的容量至少为v.size() + 100,这样在添加100个新元素时,如果当前容量不足,会重新分配足够的内存,保证后续添加100个元素不会再次重新分配内存(前提是添加元素的数量不超过v.size() + 100)。