Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 53

Перебор ключей карты в классе

20.04.2019, 19:38. Показов 8297. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс с private картой. Как я могу циклом получить список ключей из внешней функции? Если бы карта была public я бы мог перебрать данные итераторами, но как грамотно сделать это в данном случае?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ClassWithMap
{
public:
    string getKey(?)
    {
        // Что написать здесь
    }
private:
    map<string, int> someMap;
};
 
void someFunc()
{
    ClassWithMap myData;
    for(?)
    {
        doSomething(myData.getKey(?);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2019, 19:38
Ответы с готовыми решениями:

Перебор ключей в словаре
Приступил к изучению питона, сейчас полно всяких бесплатных курсов и вот проходя один из них, выполняю очередное задание. В задании нужно...

Перебор ключей по значению в словаре
Как можно перебрать значения словаря, чтобы получить ключи? К примеру в словаре A при вводе пользователем &quot;1 2 3&quot; на экран...

Перебор ключей в INI-файлах
Приветствую, ребята. Подскажите пожалуйста, как перебрать ключи из определенной секции ini-файла ?

25
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
20.04.2019, 22:02
Студворк — интернет-сервис помощи студентам
C++
1
2
 QMap<QString, double>
 QMap<QString, int>
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
20.04.2019, 22:05
Помимо выше сказанного
C++
1
2
3
4
void writeFamily(const QString& family)
{
    cout << family << endl;
}
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.04.2019, 22:07
Цитата Сообщение от Explain Посмотреть сообщение
как ни странно всё та же ошибка. Возможно дело в том, что пишу на Qt с QMap?
writeFamily(p.first); // member reference base type 'const int' is not a structure or union
ты программируешь методом научного тыка?
документацию на используемый инструмент почитать не пробовал?

https://doc.qt.io/QT-5/qmap.html
C++
1
2
3
4
5
QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
    cout << i.key() << ": " << i.value() << endl;
    ++i;
}
1
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 53
20.04.2019, 23:02  [ТС]
zayats80888, Kuzia domovenok, да, это случайно сюда попало, спасибо, у меня в коде типы данных указаны верно.

Добавлено через 36 минут
hoggy, извините, не совсем понимаю как использовать ваш пример в своей программе. Доступа к контейнеру извне по-прежнему нет.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
20.04.2019, 23:11
Explain, вам ссылку дали, там все описано, даже отдельный итератор ключей есть
1
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 53
21.04.2019, 00:33  [ТС]
Спасибо всем кто откликнулся, рабочий вариант:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class human
{
public:
    human(); // Запись данных в people
    QMap<QString, int>::key_iterator begin() const { return people.keyBegin(); }
    QMap<QString, int>::key_iterator end() const { return people.keyEnd(); }
    const QMap<QString, int>& getData() const
    {
        return people;
    }
 
private:
    QMap<QString, int> people; // Key - last name. Value - age.
};
 
void fillLastName()
{
    human myWorkers;
    for(auto p: myWorkers)
    {
        writeLastName(p);
    }
}
 
void writeLastName(const QString& lastName)
{
    cout << lastName << endl;
}
Кстати у меня уже поздновато и, думая про фамилию, в именах объектов интуитивно писал family, испавил это недоразумение))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2019, 00:33

Перебор одинаковых ключей посредством foreach
Проблема в том что foreach как буд-то игнорирует повторяющийся ключ( в данной проге это &quot;толик&quot;) ...

Вывод значения ключей массива по условию совпадения других ключей
Есть массив $arElements Array ( =&gt; Array ( =&gt; first =&gt; Name =&gt;...

Генерация и проверка на работоспособность ключей активации (регистрационных ключей)
Помогите придумать как можно осуществить сие деяние. Суть заключается в чем, первая программа генерирует уникальные ключи по определенному...

Массив ключей из ключей двух массивов
Добрый день. Необходимо собрать все ключи с двух массивов как можно эффективнее и менее ресурсозатратно. Например есть два...

Полный перебор и сокращенный перебор, путем исключения одного цикла
1) Разработать на основе метода полного перебора программу razmen1 для решения задачи о способах размена купюры достоинством 100 условных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru