排序值C ++映射具有许多键值的数据结构

时间:2015-02-07 05:02:39

标签: c++ sorting dictionary key-value

这是我的输入文件行的格式:

人口|城市|州| ListOfHighways ==>

6|Oklahoma City|Oklahoma|I-35;I-44;I-40 6|Boston|Massachusetts|I-90;I-93 8|Columbus|Ohio|I-70;I-71

我需要使用以下格式创建输出文件:

Population (newline) City, State Interstates: Comma-separated list of interstates, sorted by interstate number ascending (newline)

==>例如:

6

Boston, Massachusetts
Interstates: I-90, I-93

Oklahoma City, Oklahoma
Interstates: I-35, I-40, I-44

8

Columbus, Ohio
Interstates: I-70, I-71

这里,具有相同人口的州应该组合在一起,并且必须按州按字母顺序排序,然后按城市排序。我能够正确地获得格式,但是我无法确定使用哪种数据结构对状态进行排序,然后对城市进行排序。

我现在有map<int, vector<string> >。关键是人口,其余是向量。欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

我根本不会使用地图。您应该找出数据的每个元素实际需要的信息,并创建支持该数据所需的任何数据类型。 E.g。

struct State
{
    unsigned int Population;

    std::vector<std::string> Cities;

    std::vector<unsigned int> Highways;
};

然后,您可以解析数据,并创建std::vector<State>。使用std :: sort对矢量和数据进行排序(可以使用lambdas,或者根据需要创建比较函数或函子)。