C++ std::set和boost::ptr_set之间的差异?

C++ std::set和boost::ptr_set之间的差异?,c++,boost,boost-ptr-container,C++,Boost,Boost Ptr Container,我更改了一些代码,将std::set转换为boost::ptr_set。但是,代码没有编译;问题是,我假设ptr\u集insert的返回值与setinsert(一个对)的返回值相同。在谷歌上搜索了一个小时后,我发现ptr_集的返回值似乎是bool ptr容器和std容器之间的差异是否有明确的文件?我在boost网站上没有找到任何东西,但也许我只是在装傻 编辑 好的-让我困惑的是这个代码 t.insert(s.release(s.begin())); p = t.insert(s.rele

我更改了一些代码,将
std::set
转换为
boost::ptr_set
。但是,代码没有编译;问题是,我假设
ptr\u集
insert的返回值与
set
insert(一个
)的返回值相同。在谷歌上搜索了一个小时后,我发现
ptr_集的返回值似乎是bool

ptr容器和std容器之间的差异是否有明确的文件?我在boost网站上没有找到任何东西,但也许我只是在装傻

编辑 好的-让我困惑的是这个代码

  t.insert(s.release(s.begin()));
  p = t.insert(s.release(s.begin()));

在gcc的第一行中没有报告错误,但在第二行中没有报告与
operator=
匹配的错误,因此我认为错误在返回类型中。但是,如果您注释掉第二行,那么第一行将作为错误报告(发行版不返回迭代器)。我发布的链接使我的困惑更加复杂,其中ptr_容器的作者声明“ptr_集中的insert()返回bool”。然而,阅读下面的链接,很明显代码当时还没有完成。谢谢Kerrek。

以下代码按预期工作,接口与
std::set::insert()的相同。

#包括
#包括
#包括
int main()
{
boost::ptr_集s;
{
自动p=s.insert(新int(4));

std::cout缺少什么?如果您发布的链接中有关于set insert返回值的内容,那么我找不到它。或者在其他几页中。没有一个示例显示set insert的返回值。这对我来说似乎非常缺少。参考包含哪些概述
insert
(从我的第一个链接点击两下就到了这里)。我同意@EML:文档真的很难使用。
#include <boost/ptr_container/ptr_set.hpp>
#include <boost/assign/ptr_list_inserter.hpp>
#include <iostream>

int main()
{
  boost::ptr_set<int> s;

  {
    auto p = s.insert(new int(4));
    std::cout << "Element " << *p.first << (p.second ? " inserted" : " already existed") << std::endl;
  }
  {
    auto p = s.insert(new int(4));
    std::cout << "Element " << *p.first << (p.second ? " inserted" : " already existed") << std::endl;
  }

  boost::assign::ptr_insert(s)(1)(2)(3)(4);

  for (auto it = s.begin(), end = s.end(); it != end; ++it) { std::cout << *it << "\n"; }
}