访问 std::multimap 值的最佳方式?
Best way to access the values of std::multimap?
我有多个 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
功能,但它在这里行不通,因为那里的键被重复了多次。
还建议一些更好的数据结构来解决这个问题。
正如 Mooning Duck 在我的问题的评论部分中所建议的那样。使用 std::multimap<int,mystruct>
对我来说是最好的选择。
struct mystruct {
int value;
string name;
double score;
} ;
并且可以通过通常的结构方式访问这些值。
我有多个 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
功能,但它在这里行不通,因为那里的键被重复了多次。
还建议一些更好的数据结构来解决这个问题。
正如 Mooning Duck 在我的问题的评论部分中所建议的那样。使用 std::multimap<int,mystruct>
对我来说是最好的选择。
struct mystruct {
int value;
string name;
double score;
} ;
并且可以通过通常的结构方式访问这些值。