У меня есть следующая функция:
std::list<std::shared_ptr<Object>> AnimalManager::GetObjectsOfType(std::string type)
{
std::pair <std::multimap<std::string, std::shared_ptr<Object>>::iterator, std::multimap<std::string, std::shared_ptr<Object>>::iterator> ret;
ret = m_objects.equal_range(type);
std::list<std::shared_ptr<Object>> objectsOfType(ret.first, ret.second);
return objectsOfType;
}
Я создаю список с диапазоном итераторов, но получаю ошибку. У меня из-за итераторов в мультикарте есть пары, а элементы в списке уникальны. Но я не хочу повторять итераторы мыслей, потому что я потеряю преимущество, которое я получаю, используя std::multimap
вместо других strcuture данных со вставкой O (1), но O (n) find.
Можно ли создать список так, как я хочу это сделать? Или было бы лучше, если бы я использовал другой шаблон проектирования или структуру данных?