std::deque和boost::deque有什么区别?

5

std::dequeCppReference中有相对详细的文档,但是 boost::deque文档似乎与标准库类似,只是增加了一些方法,如nthindex_of

除了我可能忽略的这两个类之间的区别,还有其他的区别吗?


4
Boost.Container 库实现了几种著名的容器,其中包括 STL 容器。该库的目标是提供高级特性,这些特性不在标准容器中存在,或为那些不符合最新 C++ 标准的编译器提供最新标准草案特性。 - BoBTFish
2
例如,boost deque 可以递归使用;而使用 std::deque 递归是未定义的;boost::deque 提供完整的移动语义;包括 c++03 编译器的模拟模式;但 std::deque 仅在 c++11 及更高版本中支持移动语义。boost::deque 支持多态分配器,这是一个可能或可能不在 C++17 中的提案等。http://www.boost.org/doc/libs/1_60_0/doc/html/container/history_and_reasons.html#container.history_and_reasons.Why_boost_container - Mankarse
1个回答

3

是的,还有其他的区别。例如,boost::deque 可以使用不完整类型进行实例化。因此,您可以这样做:

struct foo
{
  boost::deque<foo> foos;
};

而以下代码会导致未定义行为(尽管在某些实现中可能工作良好)。

struct foo
{
  std::deque<foo> foos;
};

你确定它是UB吗?未指定行为对我来说更有意义。 - Vincent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接