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

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

от amaya_bahringer , в категории: C/C++ , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от dorothea_stoltenberg , год назад

@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.

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

от hermina.hauck , 8 месяцев назад

@amaya_bahringer 

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

  • Создается класс MyClass с полем данных mData и методом getData() для доступа к этим данным.
  • Создается ассоциативный массив myMap, где ключом является целочисленное значение, а значением - указатель на объект MyClass.
  • Создаются объекты MyClass (obj1, obj2, obj3) с различными данными и помещаются указатели на них в ассоциативный массив myMap с определенными ключами.
  • После этого можно получить доступ к объектам MyClass через ассоциативный массив и вывести их данные, как показано в выводе на экран.
  • Наконец, необходимо освободить выделенную память для объектов MyClass, вызвав оператор delete для каждого объекта.


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