Как найти общее количество значений для конкретного ключа в Multimap C ++ - PullRequest
0 голосов
/ 06 октября 2019

Я создал мультикарту с ключом в качестве значения Mod и VALUE в качестве изменяемого числа. Как хеш-таблица.

vector<int> A{1,2,3,4,5,6,7,8,9};
int n=A.size();
multimap<int,int> mymap;

int sqvalue=sqrt(n);

for(int i=0;i<n;i++)
{
   int temp=A[i]%sqvalue;
   mymap.insert(pair<int,int>(temp,A[i]));
}

Q1. Как получить общее количество ЗНАЧЕНИЙ для всех КЛЮЧЕЙ? например, сколько чисел существует в ключе № 2? Q2. Как распечатать все значения по его ключам?

Спасибо.

1 Ответ

0 голосов
/ 06 октября 2019

Вы можете использовать equal_range , который возвращает диапазон, связывающий все значения с данным ключом.

auto rng = myMap.equal_range(key);
// e.g. sum of the valuse
auto sum = std::accumulate(rng.first, rng.second, 0);
// Or print
for(auto it = rng.first; it != rng.second; ++it)
      std::cout<<elm->second;
...