使用STL容器对ID和2组值进行排序

时间:2016-07-11 13:43:20

标签: c++ sorting c++11 data-structures stl

我需要建议以最佳方式使用STL容器对3组数据进行排序 1. ID(整数) 2.第一个值(字符串) 3.第二个值(字符串)

数据结构的一个例子如下:

enter image description here

我想使用map,因为它在插入时排序,不需要单独执行排序算法。由于ID可以重复,因此它必须是一个多图,并且列的每个数据都相互链接,因此行将更改,以便排序保持附加到ID的相同值。

对ID和值进行排序是正常的,但如何对2个值进行排序,因为multimap只能使用一个值。根据我的想法,它将是多图的多重映射或数据结构的结构,然后是STL容器。但我希望尽可能简单。我需要建议如何实现这一目标。

谢谢!

3 个答案:

答案 0 :(得分:0)

当且仅当您要进行许多插入/擦除操作时,有一个地图或一组是有意义的。如果数据结构是静态的,那么存储一个向量并对其进行一次排序会更有效。也就是说,如果我正确理解你的问题,我认为你不需要地图,而是需要多重集。

typedef pair<int, pair<string, string>> myDataType;

set<myDataType> mySet;

这里,operator <对将负责排序。

如果您不想将ID称为elem.first,将字符串称为elem.second.firstelem.second.second,则可以使用结构并重载{{1对于它。

operator <

答案 1 :(得分:0)

您可以使用<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> <xp:this.data> <xp:dominoDocument var="document1" formName="Contact"></xp:dominoDocument> </xp:this.data> <xp:this.resources> <xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script> </xp:this.resources> <script type="text/javascript" src="bootstrapfileinput4/js/fileinput.js"></script> <link rel="stylesheet" href="bootstrapfileinput4/css/fileinput.css" media="all" type="text/css" /> 。按字典顺序比较元组,因此您可以免费获得所需的效果。

Live Demo

答案 2 :(得分:0)

多图中的元素按键排序。你不能'排序'多图。你可以做的是创建std::set<std::tuple<int, std::string, std::string>>的向量,其元素满足某些逻辑条件和排序向量。