Итак, у меня есть класс, у которого есть элемент данных id, и я использую его в QList<QSharedPointer<MyClass>>
, и я не уверен, как пройти проверку, чтобы проверить, существует ли в нем существующий идентификатор QList
. Как бы мне это сделать, так как QList::contains
потребует QSharedPointer<MyClass>&
, а не MyClass*
QList :: содержит с QSharedPointer
Должен ли я использовать QHash, который использует идентификатор в качестве ключа?
Выбор контейнера для использования - это ваше решение. Чтобы выбрать, какой контейнер использовать, вы должны знать об сложности алгоритма для каждой операции, которую предоставляет контейнер. –
Если ваше программное обеспечение работает в случае, когда вы получаете сырой MyClass *, а в другой ситуации он удерживается QSharedPointer, а не определенно, что у вас что-то не так с вашим дизайном. Идея QSharedPointer состоит в том, чтобы передать объект всегда как QSharedPointer. В противном случае может случиться, что у вас есть недопустимый указатель в вашем коде –
@KamilKlimek Извините, что я имел в виду, что если бы я не использовал QSharedPointer, я бы просто написал перегрузку оператора, которая затем должна работать с 'contains' – SuperWig