地图键排序

时间:2011-01-03 09:37:06

标签: c++ sorting

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

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

我们的想法是更新课程Object(调用update)的每个对象,但是按照某种顺序。

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

我的第一个想法是:在密钥名称中添加id,如:

Object *temp = /* ... */
temp->z_index = 5;
temp->name = "test";
mObjects[temp->z_index + temp->name] = temp;

但是使用这段代码我忘记了按名称访问对象。

1 个答案:

答案 0 :(得分:4)

似乎是升压多指标容器的理想候选者!

或者,您可以维护两个映射,一个按名称逐个索引,两个都保存指向同一个对象的指针(顺便看一下智能指针 - 例如shared_ptr!)

或者创建一个更复杂的密钥(即带有名称和索引的struct,提供operator<),它可以检查名称和索引等。