std :: map design:使用std :: string作为映射键和存储的对象名(member)

时间:2016-04-07 10:21:47

标签: c++ key stdstring stdmap

我试图找到设计命名对象存储的最佳方法: std :: map< std :: string,NamedObject>

我想使用 std :: map ,其中key是对象的名称。而另一方面,我希望我的对象可以自己识别,比如使用 getName()方法并返回该名称。令我恼火的是我除了设置 std :: string 的两个副本之外没有找到更好的方法,一个用于密钥,另一个用于对象内部作为成员。

如果有人有建议吗?

编辑:

基本上,这是一个资源管理器。最重要的是通过他的名字找到一个资源。但有时候,当我手上有资源时,我希望能够知道他的名字。首先,我想到了一个载体...但是想要循环它并且问每个物体他的名字找到合适的物体对我来说是坏事。

1 个答案:

答案 0 :(得分:0)

你确定对内存有如此严格的要求吗? 如果是的话,我认为你可以制作任何" Hash"对象名称的函数如下:

int hash( const std::string& obj_name );

然后使用

std::multimap<int, NamedObject>

但似乎更加复杂