有没有图书馆提供现成的建筑藏品

Are there any libraries that provide in-place constructing collections?

本文关键字:建筑 藏品 图书馆 有没有      更新时间:2023-10-16

令人难以置信的是,标准库中没有任何东西允许存储不可复制的对象——我至少遇到过这样的情况:复制一直没有任何意义(boost信号、opengl对象等(,但另一方面,默认构建是一种合理的操作。出于某种原因,默认答案似乎是使用指针而不是对象。这只会通过额外的间接寻址和引用计数引入毫无意义的开销(因为unique_ptr也是不可压缩的(,而且使用起来有些尴尬。

话虽如此,是否存在这样的替代方案?

从C++11开始,大多数(如果不是全部的话(容器都不要求它们的元素是可复制的。例如,vector只要求元素是可移动的,而其他容器(deque、*list、*map、set(没有可复制/可移动的元素要求。您需要默认构造元素,或者使用template方法来创建它们。当然,如果您调用一个需要复制/移动的操作,那么您的类型必须支持它,但仅仅将元素存储在容器中并不要求它们是可复制的。