【发布时间】:2016-07-28 03:56:37
【问题描述】:
我试图找到设计命名对象存储的最佳方法:std::map
我想使用 std::map,其中 key 是对象的名称。另一方面,我希望我的对象本身是可识别的,例如使用 getName() 方法并返回该名称。让我恼火的是,除了设置 std::string 的两个副本之外,我没有找到更好的方法,一个用于键,一个在对象内部作为成员。
如果有人有建议?
编辑:
基本上,这是一个资源管理器。最重要的是找到他名字的资源。但有时,当我手下只有资源时,我希望能够知道他的名字。首先,我想到了一个向量……但是循环的想法让它找到了合适的对象,并询问每个对象的名字以找到正确的对象。
【问题讨论】:
-
抱歉,我的意思是说:boost multi_index_container 会允许这样做,但这是您可能不想要的额外复杂性。
-
是的。我正在寻找一种易于用作 std::map 的解决方案。我正在考虑从对象中删除名称并使用迭代器来识别它,但我不喜欢在地图管理之外的其他地方使用 std::map 的一部分。
-
是的,这是标准库中所有关联容器的限制。话虽如此,大多数问题都可以用“命名”和“做”作为独立的概念来表达,因此通常将它们分开是合适的。