C++ 地图键排序
我正在为我的应用程序构建对象系统。现在我有了这样的代码:C++ 地图键排序,c++,sorting,C++,Sorting,我正在为我的应用程序构建对象系统。现在我有了这样的代码: std::map<std::string, Object*> mObjects; 但是有了这段代码,我就无法按名称访问对象了。似乎是boost多索引容器的理想候选者 或者,您可以维护两个映射,一个按名称,一个按索引,两个都持有指向同一对象的指针,应该顺便看看智能指针-例如共享的ptr 或者创建一个更复杂的键,即带有名称和索引的结构,提供操作符似乎是boost多索引容器的理想候选 或者,您可以维护两个映射,一个按名称,一个按索
std::map<std::string, Object*> mObjects;
但是有了这段代码,我就无法按名称访问对象了。似乎是boost多索引容器的理想候选者 或者,您可以维护两个映射,一个按名称,一个按索引,两个都持有指向同一对象的指针,应该顺便看看智能指针-例如共享的ptr
或者创建一个更复杂的键,即带有名称和索引的结构,提供操作符似乎是boost多索引容器的理想候选 或者,您可以维护两个映射,一个按名称,一个按索引,两个都持有指向同一对象的指针,应该顺便看看智能指针-例如共享的ptr
或者创建一个更复杂的键,即具有名称和索引的结构,提供运算符可以是std::multiset也可以是一个选项。@Naveen,你是说std::multimap吗?@Naveen:STL容器都不支持同时排序谓词。如果OP不想维护2个容器,Boost Multi Index是最佳选择。std::multiset也可能是一个选项。@Naveen,你的意思是std::multimap吗?@Naveen:没有一个STL容器支持同时排序谓词。如果OP不想维护2个容器,那么Boost Multi Index是最佳选择。
Object *temp = /* ... */
temp->z_index = 5;
temp->name = "test";
mObjects[temp->z_index + temp->name] = temp;