std::vector::resize() 与 std::vector::reserve()
在 C 中,std::矢量是一种常用的容器,用于存储相同类型的元素。它提供了两种方法,std::vector::reserve() 和 std::vector::resize(),它们在内存管理中发挥着不同的作用。
std::vector::reserve()
std::vector::resize()
提供的代码中的应用
在给定的示例代码中,成员向量 my_member 最初使用 std::vector::reserve() 为 n_dim 元素分配内存。但是,没有初始化任何元素,并且访问超出当前逻辑大小 (0) 的元素将导致未定义的行为或错误。
要将元素写入向量,std::vector::resize() 应该是用过的。在这种情况下,它会将向量大小调整为 n_dim 并将所有元素初始化为零。
VS2010 SP1 行为
提供的测试代码在使用 VS2010 SP1 的调试版本中失败,因为它尝试访问逻辑大小仅为 0 的向量的元素 5。这被视为未定义行为并导致调试崩溃
结论
根据提供的信息,当需要将元素写入向量时,使用 std::vector::resize() 是正确的。当知道将来会发生插入并且应提前为其保留内存,但元素值不需要预先初始化时,应使用 std::vector::reserve()。
以上是`std::vector::reserve()` 与 `std::vector::resize()`:何时使用哪个来实现高效内存管理?的详细内容。更多信息请关注PHP中文网其他相关文章!