Как создать ассоциативный массив указателей на объекты с++?

Пользователь

от amaya_bahringer , в категории: C/C++ , 7 месяцев назад

Как создать ассоциативный массив указателей на объекты с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от dorothea_stoltenberg , 7 месяцев назад

@amaya_bahringer 

В C++ стандартным способом создания ассоциативного массива указателей на объекты является использование контейнера std::map.


Ниже приведен пример, который показывает, как создать и использовать std::map для создания ассоциативного массива указателей на объекты:

 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
#include 
#include 

class MyClass {
public:
    MyClass(int data) : mData(data) {}

    int getData() const {
        return mData;
    }

private:
    int mData;
};

int main() {
    std::map myMap;

    // Создаем объекты MyClass и помещаем указатели на них в ассоциативный массив
    MyClass* obj1 = new MyClass(1);
    MyClass* obj2 = new MyClass(2);
    MyClass* obj3 = new MyClass(3);

    myMap[1] = obj1;
    myMap[2] = obj2;
    myMap[3] = obj3;

    // Получаем доступ к объектам MyClass через ассоциативный массив и выводим их данные
    std::cout << "Data at key 1: " << myMap[1]->getData() << std::endl;
    std::cout << "Data at key 2: " << myMap[2]->getData() << std::endl;
    std::cout << "Data at key 3: " << myMap[3]->getData() << std::endl;

    // Освобождаем выделенную память для объектов MyClass
    delete obj1;
    delete obj2;
    delete obj3;

    return 0;
}


Обратите внимание, что при использовании указателей на объекты необходимо также правильно освобождать выделенную память с помощью оператора delete.