【问题标题】:Best way to access the values of std::multimap? [closed]访问 std::multimap 值的最佳方法? [关闭]
【发布时间】:2018-01-16 16:11:48
【问题描述】:

我有多个 std::multimap 相同的键和不同的值。我想在一个地方访问每个 std::multimap 的值。这样做的最佳方法是什么。

multimap<int, double> data1;
multimap<int, string> data2;
multimap<int, int> data3;
for(int i = 0; i < 20; i++) {
    if(i%2 == 0) {
        data1.insert(make_pair(i,10.0));
    }
    else {
        data1.insert(make_pair(0,10.0));
    }
}
for(int i = 0; i < 20; i++) {
    sting temp = "String Value" + to_string(i);
    if(i%2 == 0) {
        data2.insert(make_pair(i,temp));
    }
    else {
        data2.insert(make_pair(0,temp));
    }
}
for(int i = 0; i < 20; i++) {
    if(i%2 == 0) {
        data3.insert(make_pair(i,i));
    }
    else {
        data1.insert(make_pair(0,i*i));
    }
}
for(const auto& mp: data1) {
    // Now I want to access data of all multimap here of key mp.first
}

我考虑过std::find 功能,但它在这里不起作用,因为那里的键被重复多次。

还建议一些更好的数据结构来解决这个问题。

【问题讨论】:

  • 为什么不是一个multimap&lt;int, mystruct&gt;
  • @MooingDuck :我从没想过。它肯定会在这里工作,谢谢:)

标签: c++ iterator stdmap


【解决方案1】:

正如Mooning Duck 在我的问题的评论部分所建议的那样。使用std::multimap&lt;int,mystruct&gt; 对我来说是最好的选择。

struct mystruct {
    int value;
    string name;
    double score;
} ;

并且可以以通常的结构方式访问这些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2013-10-21
    • 2016-05-26
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多