C++ карта STL с пользовательским классом как второй тип

Вы могли наложить логическую сетку по своей плоскости. Если сетка имеет определенное число содержавших точек, это считают "плотным" и можно было бы тогда разбавить. Это сделано много в ГИС-приложениях при работе с кластерными допусками. Используя сетку помогает разделить Ваш алгоритм утончения.

5
задан Yu Hao 25 July 2013 в 05:55
поделиться

3 ответа

#include <map>

std::map<int, MyClass> myMap;

MyClass foo;
myMap[5] = foo;
myMap[5].bar = 10;

Вам нужно, чтобы MyClass был по умолчанию и копируемым, чтобы его можно было создать (если вы используете, например, myMap [5] ]) и скопировал на карту.

10
ответ дан 18 December 2019 в 13:16
поделиться

you should use like this

typedef std::map myMapType;

myMapType myMap;

But be careful when inserting your class in this as if you insert more than one time for same key, you will never get a notice :

Call myMapType::iterator itr myMap.find(key) , depending upon return type and your program requirments you can procced.

Like wise try to avid access any element using [] operator like

 somefunc(myMap[10]);

As you will not get an error from map even there was noting inserted for key 10

0
ответ дан 18 December 2019 в 13:16
поделиться

Да, единственное условие:

  • Тип ключа сопоставим (Хорошо)
  • Значение Тип может быть создан копированием?

Так что вам просто нужно убедиться, что ваш объект может быть создан копированием, чтобы его можно было скопировать на карту.

4
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: