我特别喜欢以简单方式使用STL容器的简单性.
我从来没有真正弄清楚如何让Boost库在我的开发平台上运行,事实上我认为我甚至都没有尝试过.我猜你可以说我只是试图推迟不可避免的事情,因为Boost显然是一个我应该使用的有用的库.
但我的问题与本主题基本相同:如何使用类初始化STL向量/列表而不调用复制构造函数
我有std::list<ExpensiveClass> mylist;,我只想要一个函数将一个新实例推入列表并调用默认构造函数,而不是从它的临时堆栈实例中复制它.在另一个主题中提到了移动构造函数.我看了他们,坦率地说,除了恐惧之外什么都没有.两个&符号!
如果我只创建一个ExpensiveClass对象数组,它会工作吗?ExpensiveClass *mylist = new ExpensiveClass[20];这会调用构造函数20次吗?
在我看来我应该使用boost:ptr_list.
将对象插入容器会调用该对象上的复制构造函数.实际上还没有办法解决这个问题,因此为什么指针容器用于大型对象:复制指针要便宜得多.
如果您选择使用智能指针容器,您可以使用其中一个Boost指针容器,也可以使用shared_ptrs的STL容器.
回答你的问题:
ExpensiveClass *mylist = new ExpensiveClass[20];
Run Code Online (Sandbox Code Playgroud)
默认构造函数ExpensiveClass被调用20次:对于数组的每个元素一次.
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |