Ren*_*sch 2 c++ boost shared-ptr unordered-set
我想在我的程序中使用以下数据集合:
boost::unordered_set<boost::shared_ptr<Entity> > _entities;
Run Code Online (Sandbox Code Playgroud)
我正在使用unordered_set,因为我希望快速插入和删除(通过键,而不是迭代器)实体.
我怀疑的是,如果我实现以下两个功能:
void addEntity(boost::shared_ptr<Entity> entity) {
_entities.insert(entity);
}
void removeEntity(boost::shared_ptr<Entity> entity) {
_entities.remove(entity);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试删除实体时,unordered_set会找到它吗?因为存储在unordered_set中的shared_ptr是我试图用来从unordered_set中删除实体的shared_ptr的副本,如果我调用removeEntity()的话.
我需要为unordered_set找到实体做什么?我是否需要创建一个比较函数来检查shared_ptr的值?但是,unordered_set不会因为散列函数使用shared_ptr作为散列而减速吗?我是否需要创建一个使用实体作为哈希的哈希函数?
是的,你可以使用boost::shared_ptr的boost::unordered_set(同样适用于这些的std类版本)
boost::unordered_set使用boost::hash模板函数生成密钥boost::unordered_set.此函数专门用于boost::shared_ptr考虑基础指针.
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |