c++ - boost::scoped_ptr 和 C++ 中的 STL

标签 c++ boost stl scoped-ptr

我正在阅读有关 boost 智能指针的内容,我无法理解的一件事是为什么 boost::scoped_ptr 不能与 STL 容器一起使用?我读过它是不可复制的,但这到底是什么意思,为什么 STL 需要它?

最佳答案

一些容器操作,比如std::vector的构造函数

vector(size_type n, const T& value, const Allocator& = Allocator());

std::vector::resize , 要求 TCopyInsertable .这要求 vector 能够调用 T的复制构造函数。所以你不能构造一个 std::vector<boost::scoped_ptr<U>>使用此构造函数。

C++11之前,对T的要求更严格。自最新标准以来,要求是针对每个容器操作量身定制的,而不是针对整个容器。所以可能有很多情况你可以使用 boost::scoped_ptrs 的 vector 。 .

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

相关文章:

c++ - Rand_Max*(max-min)+min << 那是什么?

尝试将现有数组的反向存储到另一个数组时出现 C++ 错误。不能使用指针

c++ - 使用 OpenCV 和 C++ 测量模糊图像

c++ - 如果您不知道原始类型是有符号的还是无符号的,有没有办法从 boost::any 中获取整数

c++ - 是否可以重用 binary_oarchive 实例?

c++ - Boost 多数组的 std::vector

c++ - 当正则表达式匹配重叠时会发生什么?

c++ - 有效地计算两个 std::multimap 迭代器之间的条目数

java - 使用 JNA 从 java 中的内部源对象 (.so) 文件调用 C++ 函数时出现链接异常。

c++ - 在图像上应用蒙版以裁剪前景会产生不完整的输出