我正在为我的应用程序构建对象系统。现在我有这样的代码:
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;
但是使用这段代码我忘记了按名称访问对象。
答案 0 :(得分:4)
似乎是升压多指标容器的理想候选者!
或者,您可以维护两个映射,一个按名称逐个索引,两个都保存指向同一个对象的指针(顺便看一下智能指针 - 例如shared_ptr
!)
或者创建一个更复杂的密钥(即带有名称和索引的struct
,提供operator<
),它可以检查名称和索引等。