【发布时间】:2010-03-05 07:26:37
【问题描述】:
我有一个案例,我希望将资源列表存储在 std::vector 中。在我看来,我的选择如下:
- 给我的资源一个默认构造函数
- 将它们存储为堆对象(并将它们包装在共享指针中)
选项 1 可以构造无效资源,选项 2 迫使我使用堆。
我是否在这里遗漏了任何选项?
【问题讨论】:
-
为什么要给资源默认ctor? vector 只需要复制 ctor。
-
"选项 2 强制我使用堆" - 好吧,向量也会将其内容存储在堆中(除非您使用自定义分配器),尽管在连续内存中。因此,您将无法以一种或另一种方式绕过使用堆。
-
发现我在资源中存储了一个引用,所以问题不是默认构造函数,thx
-
@Naveen:资源的问题是您通常不希望它们具有复制语义。