c++ - 当我知道我插入的指针时,如何从 boost::ptr_set 中删除?

标签 c++ boost set boost-ptr-container

如何从 boost::ptr_set 中删除当我知道我插入的指针时? (我有一个指向插入类对象的 this 指针)。

这是一个人为的例子来展示我正在尝试做的事情:

boost::ptr_set<ServerConnection1> m_srv_conns1;

ServerConnection1 *this_ptr;
m_srv_conns1.insert(this_ptr = new ServerConnection1);
m_srv_conns1.erase(this_ptr); //It won't work!

有一个 this指向插入对象的指针,如何告诉 boost::ptr_seterase(this) ?注意:我不再位于插入的对象中,但我有一个指向它的指针。

更新

其中一条评论是我没有满足 boost::ptr_set 的所有要求.有什么要求?

我想提供一个 < operator会成功吗?

回答

  1. 更改 m_srv_conns1.erase(this_ptr);m_srv_conns1.erase(*this_ptr);
  2. 将以下代码放入ServerConnection1类(class):

bool operator<(const ServerConnection1 & sc1) const
{
return (this < &sc1); //Pointer comparison
}

最佳答案

试试 m_srv_conns1.erase(*this_ptr);

关于c++ - 当我知道我插入的指针时,如何从 boost::ptr_set 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655968/

相关文章:

Scala 按集过滤

python - 实现动态 View 的简单方法?

c++ - 如何从 C++ 重新启动 Mac OS

c++ - boost spirit qi解析器发布失败,调试通过

c++ - 如何从已编译的C文件(使用Borland C++编译)中查看程序代码

c++ - boost::asio 和递归服务器调用

c++ - OSX 上的 CMake 和 Boost - 没有制定目标的规则

java - 在 JPA @OneToMany 关系中更新 Set 元素的正确方法?

c++ - 在线区间并集的长度

模板化类对象的 C++ vector