gpt4 book ai didi

c++ - RAII 和 C++ STL

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:15 25 4
gpt4 key购买 nike

我有一个案例,我希望将资源列表存储在 std::vector 中。在我看来,我的选择如下:

  1. 给我的资源一个默认构造函数
  2. 将它们存储为堆对象(并将它们包装在共享指针中)

选项 1 使构造无效资源成为可能,选项 2 强制我使用堆。

我是否遗漏了任何选项?

最佳答案

您不需要默认构造函数来拥有实例 vector 。

唯一的限制是当类没有默认构造函数时,您不能将 vector::resize 与默认参数一起使用。

vec.resize(20);  // requires default constructor

但是你可以给 vector::resize 一个默认对象:

std::vector<foo> vec;
vec.resize(20, foo(10)); // give a sample object since foo has not default constructor

关于c++ - RAII 和 C++ STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2385169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com