我正在为我的应用程序构建对象系统。现在我有这样的代码:

std::map<std::string, Object*> mObjects;

这个想法是要以某种顺序更新Object类的每个对象(称为update)。

每个对象中都有一个成员int z_index;。如何根据该索引对 map 进行排序(顺便说一句,索引可能相同)?

我的第一个想法是:将id添加到密钥名称中,例如:
Object *temp = /* ... */
temp->z_index = 5;
temp->name = "test";
mObjects[temp->z_index + temp->name] = temp;

但是有了这段代码,我就失去了按名称访问对象的权限。

最佳答案

似乎是Boost多索引容器的理想选择!

或者,您可以维护两个映射,一个按索引命名,两个映射都持有指向同一对象的指针(应该顺便查看智能指针,例如shared_ptr!)

或创建一个更复杂的键(即名称和索引为struct,提供operator<),可以同时检查名称和索引等。

关于c++ - map 键排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4583411/

10-11 22:40
查看更多