У меня есть два варианта создания std-карты. Я могу работать с обоими типами карт.std :: карта объектов или указателей объектов?
1. std::map<A, std::string>
2. std::map<A*, std::string>
где A
является объектом класса
Позже в коде я должен выполнить операцию поиска.
1. std::map<A, std::string> myMap1;
if(myMap1.find(A_obj) != myMap1.end())
{
}
2. std::map<A*, std::string> myMap2;
if(myMap2.find(A_obj_ptr) != myMap2.end())
{
}
Я хочу знать, какой из них рекомендуется создать. В каком из этих двух вариантов я должен не должен перегружать всех операторов класса A
для поиска работы. Какие из них будут иметь проблемы при работе вставки, если какие-либо операторы не будут перегружены.
Если это помогает, это класс А
class A
{
private:
std::vector<std::string> m_member;
public:
A(std::vector<std::string> input);
};
В зависимости от того, что представляет ваш объект. Для такого решения требуется дополнительная информация о 'A'. – Paranaix
@Paranaix Я добавил класс 'A' info – ontherocks
Также рассмотрите возможность использования (1) std :: unordered_map для более быстрого поиска времени (с учетом подходящей хеш-функции и, возможно, кэшированного хэша) или (2) отсортированного std :: vector> для лучшей локализации кэша. –
metal