std::map 设计:使用 std::string 映射键和存储的对象名称(成员)

std::map design : use a std::string for the map key and the stored object name (member)

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

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

如果有人有什么建议?

编辑:

基本上,这是一个资源管理器。最重要的是通过他的名字找到资源。但有时,当我手下只有资源时,我希望能够知道他的名字。首先,我想到了一个向量...但是循环处理它并询问每个对象他的名字以找到正确的对象的想法对我来说很糟糕。

你确定你对内存有这么苛刻的要求吗? 如果是,我认为您可以像这样为对象名称创建任何 "Hash" 函数:

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

然后使用

std::multimap<int, NamedObject>

但似乎更加复杂