在 multimap 的同一行打印相同键的值,在下一行打印不同键的值
Print the values of the same key in same line in multimap and of different keys in next line
我有一个 multimap,它具有如下键值对:
multiMap[-3] = {'h'}
multiMap[-2] = {'d','j','m'}
multiMap[-1] = {'b','f','i','p'}
我希望打印输出,第一行包含键“-3”的所有值,第二行包含键“-2”的所有值,最后一行包含所有值对应键 '-1'.
我使用下面的代码,但它在一个新行中打印每个元素
int main()
{
multimap<int,char> multiMap;
multimap.insert({-3,'h'});
//And so on for all the key-value pairs
//To print the multimap:
for(auto i = multiMap.begin(); i != multiMap.end(); i++)
cout << i->second << "\n";
return 0;
}
为了在一行中打印特定键的所有值,我们使用 multimap::lower_bound() 和 multimap::upper_bound() 函数。
#include <iostream>
#include <map>
using namespace std;
int main()
{
multimap<int,char> myMap;
myMap.insert({-1,'b'});
myMap.insert({-1,'f'});
myMap.insert({-1,'i'});
myMap.insert({-1,'p'});
myMap.insert({-2,'d'});
myMap.insert({-2,'j'});
myMap.insert({-2,'m'});
myMap.insert({-3,'h'});
auto i = myMap.begin();
for(; i != myMap.end();)
{
auto itr = myMap.lower_bound(i->first);
for(; itr != myMap.upper_bound(i->first); itr++)
cout << itr->second << " ";
i = itr; //This skips i through all the values for the key: "i->first" and so it won't print the above loop multiple times (equal to the number of values for the corresponding key).
cout << "\n";
}
return 0;
}
我有一个 multimap,它具有如下键值对:
multiMap[-3] = {'h'}
multiMap[-2] = {'d','j','m'}
multiMap[-1] = {'b','f','i','p'}
我希望打印输出,第一行包含键“-3”的所有值,第二行包含键“-2”的所有值,最后一行包含所有值对应键 '-1'.
我使用下面的代码,但它在一个新行中打印每个元素
int main()
{
multimap<int,char> multiMap;
multimap.insert({-3,'h'});
//And so on for all the key-value pairs
//To print the multimap:
for(auto i = multiMap.begin(); i != multiMap.end(); i++)
cout << i->second << "\n";
return 0;
}
为了在一行中打印特定键的所有值,我们使用 multimap::lower_bound() 和 multimap::upper_bound() 函数。
#include <iostream>
#include <map>
using namespace std;
int main()
{
multimap<int,char> myMap;
myMap.insert({-1,'b'});
myMap.insert({-1,'f'});
myMap.insert({-1,'i'});
myMap.insert({-1,'p'});
myMap.insert({-2,'d'});
myMap.insert({-2,'j'});
myMap.insert({-2,'m'});
myMap.insert({-3,'h'});
auto i = myMap.begin();
for(; i != myMap.end();)
{
auto itr = myMap.lower_bound(i->first);
for(; itr != myMap.upper_bound(i->first); itr++)
cout << itr->second << " ";
i = itr; //This skips i through all the values for the key: "i->first" and so it won't print the above loop multiple times (equal to the number of values for the corresponding key).
cout << "\n";
}
return 0;
}