Switch to full style
For C/C++ coders discussions and solutions
Post a reply

Multimap iteration

Fri Nov 07, 2008 6:15 pm

Im currently working with multimap in C++. So for example i got a multimap like
this:
Code:
m.insert(pair<const char* const, int>("a", 1));
m.insert(pair<const char* const, int>("c", 2));
m.insert(pair<const char* const, int>("b", 3));
m.insert(pair<const char* const, int>("b", 4));
m.insert(pair<const char* const, int>("a", 5));
m.insert(pair<const char* const, int>("b", 6));

and i want to loop it but without repeating the same key eg: I want to print
average of each key and print like this

Code:
a = 3
b = 6.3
c = 2


My current solution is loop each key and find all other value with the same key.
So its like a loop in loop. But the problem is I print a twice, b three times,
and C once. How can I skip the repetition so it wont print the same key again?



Re: Multimap iteration

Fri Nov 07, 2008 6:17 pm

If there are no memory constraints you can create a temporary map of key
& valueInfo.
valueInfo can be a structure like following...


Code:
Struct valueInfo
{
int val_total;
int count
}



Now you can fill this map while traversing your original data structure
(multimap) ...

For your example it will be
Code:
("a", (6,2))
("b", (13,3))
("c", (2,1))



Once you have traversed the original data structure, you can calculate
the desired output with a single traversal of your temp map.



So it will be Loop after Loop solution instead of yours Loop in Loop

Post a reply