Priyanka Somani Ответов: 2

Ошибка: ‘класс std::map "не имеет члена с именем" first’


Учитывая массив , нам нужно вывести частоту всех элементов массива.
arr[]= {1,5,1,2,5,2,g}
Выход : 1 2
2 2
5 3

Что я уже пробовал:

Я попробовал это сделать с помощью unordered_map следующим образом-
void count(int arr[] , int n){
    map<int ,int>d;
    for(int i=0;i<n ;i++){
        d[arr[i]]++;
    }
    for(auto i : d){
       cout<<d.first<<" "<<d.second<<"\n";
    }
}

В основном я использовал map для хранения частот элементов массива и попробовал его на C++14 , но он дает следующую ошибку-
ошибка:‘class std::map’ не имеет члена с именем ‘first’

Я думаю, что карта имеет первый и второй встроенные в нее элементы, тогда почему она выдает ошибку??
Если есть какие-либо исправления в коде , пожалуйста, дайте мне знать.

2 Ответов

Рейтинг:
14

Shao Voon Wong

Так и должно быть i.first, нет d.first.

<pre>for(auto i : d){
       cout<<i.first<<" "<<i.second<<"\n";
    }


Рейтинг:
1

Richard MacCutchan

Цитата:
Я думаю, что в карту встроены первый и второй члены
Вместо того чтобы гадать, воспользуйтесь документацией: <карта> | Microsoft Docs[^]. Это парный объект на карте, который содержит первое и второе свойства. Видеть пара структура | документы Майкрософт[^].