0 / 0 / 0
Регистрация: 29.05.2018
Сообщений: 31
1

Использование ассоциативного массива в структуре

18.04.2020, 17:13. Показов 1230. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct man
{
    std::string name;
    std::map<std::string, int> arr;
};
 
man m;
std::string s;
std::vector<man> people;
std::string test[]={"money", "age")
 
for (int i = 0; i < people.size(); i++)
    {
        for (int j = 0; j < 2; j++)
        {
            s = test[j];
            m.arr_of_grade[s] = rand()%(100-20+1)+20;
            people.push_back(m);
        }
        
    }
я записываю в массив people информацию в формате структуры о двух людях, но не знаю, как правильно заполнять ассоциативный массив для каждого человека
при использовании кода выше, программа зависает, дело в неправильном использовании push_back?

так же я не знаю, как потом выводить для каждого человека его ассоциативный массив
если имена я могу выводить следующим образом, то как разобраться с ассоц массив, мне не понятно
C++
1
2
3
for (int i = 0; i < people.size(); i++){
   std::cout<<people[i].name<<std::endl;
}
раньше без использования структур я использовал следующий цикл для вывода ассоц масс
C++
1
2
3
4
5
for (auto i = arr.begin(); i != arr.end(); i++)
    {   
        std::cout <<i->first<<": "<<i->second<<std::endl;
        
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2020, 17:13
Ответы с готовыми решениями:

Использование метода в структуре
Как вложить метод в структуру? Ну и вызвать его по том от туда? Компилятор вот такое собирать...

Сортировка ассоциативного массива
Всем привет! Есть массив такого вида: Array ( =&gt; Array ( =&gt;...

Копирование ассоциативного массива
Здравствуйте :) прошу помощи в освоении данного материала. Появилась необходимость копировать...

Создание ассоциативного массива
&lt;? $a=array(&quot;mega&quot;=&gt;&quot;sega&quot;); echo &quot;$a&quot;; ?&gt; Где тут у мя ошибка?

5
6085 / 3445 / 1400
Регистрация: 07.02.2019
Сообщений: 8,755
18.04.2020, 17:19 2
Цитата Сообщение от Kdr4me Посмотреть сообщение
m.arr_of_grade[s]
у тебя в классе man нет члена с именем arr_of_grade
Цитата Сообщение от Kdr4me Посмотреть сообщение
for (int i = 0; i < people.size(); i++)
people.size() на этом этапе равен 0, так что цикл даже не запустится
0
0 / 0 / 0
Регистрация: 29.05.2018
Сообщений: 31
18.04.2020, 17:50  [ТС] 3
zayats80888, неправильно скопировал код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct man
{
    std::string name;
    std::map<std::string, int> arr;
};
 
man m;
std::string s;
std::vector<man> people;
std::string test[]={"money", "age")
 
for (int i = 0; i < people.size(); i++)
    {
        for (int j = 0; j < 2; j++)
        {
            s = test[j];
            m.arr[s] = rand()%(100-20+1)+20;
            people.push_back(m);
        }
        
    }
Цитата Сообщение от zayats80888 Посмотреть сообщение
people.size() на этом этапе равен 0, так что цикл даже не запустится
у меня "за кадром" people уже заполнен двумя именами, он не пустой
0
Вездепух
Эксперт CЭксперт С++
11684 / 6363 / 1723
Регистрация: 18.10.2014
Сообщений: 16,037
18.04.2020, 18:09 4
Цитата Сообщение от Kdr4me Посмотреть сообщение
программа зависает, дело в неправильном использовании push_back?
Если программа пытается итерировать до конца вектора, но на каждой итерации добавляет в вектор все новые и новые элементы, то до конца вектора она никогда не доберется: получится бесконечный цикл. Разумеется, программа "зависает".
0
0 / 0 / 0
Регистрация: 29.05.2018
Сообщений: 31
18.04.2020, 18:12  [ТС] 5
мне нужно, чтобы в people хранилось две структуры "man" и у каждой был свой ассоциативный массив.
я могу заполнить ассоциативный массив, но я не уверен, что он привязан к первой структуре.
к тому же мне не ясно, как заполнить через цикл ассоц массив и для второй структуры (или будь их еще больше), а дальше выводить содержимое people, а именно две структуры не как последние два цикла в коде ниже, а как в одном цикле..
C++
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <map>
#include <string>
#include <vector>
 
 
struct man
{
    std::string name;
    std::map<std::string, int> arr;
};
 
man m;
std::string s;
std::vector<man> people;
std::string test[]={"money", "age"};
int main ()
{
    
    std::cout <<"Enter name: "<<std::flush;
    std::cin >> s;
    m.name = s;
    people.push_back(m);
    std::cout <<"Enter name: "<<std::flush;
    std::cin >> s;
    m.name = s;
    people.push_back(m);
 
    for (int i = 0; i < people.size(); i++)
    {
        for (int j = 0; j < 2; j++)
        {
            s = test[j];
            m.arr[s] = rand()%(100-20+1)+20;
            //people.push_back(m);
        }
        
    }
    for (int i = 0; i < people.size(); i++){
        std::cout<<people[i].name<<std::endl;
    }
 
    for (auto i = m.arr.begin(); i != m.arr.end(); i++)
    {   
        std::cout <<i->first<<": "<<i->second<<std::endl;
    }
    
}
0
6085 / 3445 / 1400
Регистрация: 07.02.2019
Сообщений: 8,755
18.04.2020, 18:27 6
Лучший ответ Сообщение было отмечено Kdr4me как решение

Решение

Цитата Сообщение от Kdr4me Посмотреть сообщение
к тому же мне не ясно, как заполнить через цикл ассоц массив и для второй структуры
C++
1
2
3
4
5
6
7
8
9
10
constexpr size_t count = 6; // сколько нужно добавить
for (size_t i = 0; i < count; i++)
{
    m.name = "name" + std::to_string(i);
    for (auto&& str : test)
    {
        m.arr[str] = rand() % (100 - 20 + 1) + 20;
    }
    people.push_back(m);
}
Цитата Сообщение от Kdr4me Посмотреть сообщение
а дальше выводить содержимое people, а именно две структуры не как последние два цикла в коде ниже, а как в одном цикле..
C++
1
2
3
4
5
6
7
8
for (auto&& m : people)
{
    std::cout << m.name << ":\n";
    for (auto&& p : m.arr)
    {
        std::cout << '\t' << p.first << '\t' << p.second << std::endl;
    }
}
1
18.04.2020, 18:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2020, 18:27
Помогаю со студенческими работами здесь

Размерность ассоциативного массива
Знаю вопрос глупый, но ранее не приходилось работать с этим типом данных. Как узнать размерность...

Получение ассоциативного массива
Немогу получить ассоциативный массивиз запроса $select = mysqli_query($links, $qwery); ...

Заполнения ассоциативного массива
Добрый день, не давно начала учить php, и вот дошел до темы ассоциативный массива $a = array( ...

Правильное использование шаблона в структуре
День добрый! Мне необходимо написать функцию, которая принимает другую функцию в качестве аргумента...

Вывод двумерного ассоциативного массива
Доброго времени суток! Имеется в наличии следующий массив: public $goods = array( &quot;IPhone...

Сортировка одномерного ассоциативного массива
Уважаемые форумчане, очень важное дело, нужно отсортировать масиив по двум ключам, по месяцу , по...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru