Если вы создаете этот список:
Затем избегая дубликатами может быть жизнеспособной альтернативой удаления дубликатов.
QList<int> cont;
int incomingValue;
if(!cont.contains(incomingValue))
{
cont.append(incomingValue);
}
Кроме того, поскольку это вопрос о QList <> (и не только QList < Int>) ...
Некоторые из них могут использовать специальный класс, и как избежать дубликатов.
class SoftDrink
{
public:
int oz
QString flavor
bool operator==(const Beverage &other) const{
uint hash = qHash(flavor)^oz;
uint otherHash = qHash(other.flavor)^other.oz;
return hash == otherHash;
}
}
оператор == как один выше, может позволить QList оценить метод содержит() против пользовательского типа данных
QList<SoftDrink> uniquePurchaseHistory;
SoftDrink newPurchase;
if(!uniquePurchaseHistory.contains(newPurchase)){
uniquePurchaseHistory.append(newPurchase);
}
Поскольку вы имеете дело со списками, я хочу указать, что std :: list имеет функцию сортировки элементов, которая имеет лучшую производительность, чем std :: sort в списке. –
и да только что заново открыли, std :: list также имеет уникальную функцию-член, что означает, что это предпочтительнее, чем std :: unique. –
Спасибо Amit за это, но я не использую std :: list <> много (по совету Херба Саттера, что std :: vector в большинстве случаев является «правильным» контейнером для использования, даже в стандарте C++ существует такой рекомендацию см. в разделе 23.1.1/2). –