Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 地图键排序_C++_Sorting - Fatal编程技术网

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;