Comment obtenir le min et le max d'un QList dans Qt sans utilisation d'un itérateur?
Est-il un moyen d'obtenir le min et le max d'un QList dans Qt sans utilisation d'un itérateur ?
Voici le code à l'aide d'un itérateur :
QList<double>::iterator min = std::min_element(listVal.begin(), listVal.end());
QList<double>::iterator max = std::max_element(listVal.begin(), listVal.end());
Vous avez pour parcourir la liste en quelque sorte. Vous pouvez le faire sans itérateur objets de l'accès aux éléments à l'indice, mais vous devrez alors faire le calcul vous-même. Pourquoi voulez-vous faire cela?
Pourquoi voulez-vous que sans itérateur ? (vous pouvez toujours utiliser
Pourquoi êtes-vous en évitant itération, est-il une optimisation? Si oui, vous pouvez simplement garder une trace des valeurs minimale et maximale lorsque des éléments sont ajoutés à la liste, et itérer lorsqu'un élément est supprimé.
Voulez-vous
Cette solution est meilleure que @vahancho 's solution parce que je n'ai pas besoin de trier la liste. J'ai donc gagné une ligne de code.
Pourquoi voulez-vous que sans itérateur ? (vous pouvez toujours utiliser
auto
en C++11 pour éviter d'écrire QList<double>::iterator
)Pourquoi êtes-vous en évitant itération, est-il une optimisation? Si oui, vous pouvez simplement garder une trace des valeurs minimale et maximale lorsque des éléments sont ajoutés à la liste, et itérer lorsqu'un élément est supprimé.
Voulez-vous
double min = *std::min_element(listVal.begin(), listVal.end());
? (en supposant que pas la liste vide).Cette solution est meilleure que @vahancho 's solution parce que je n'ai pas besoin de trier la liste. J'ai donc gagné une ligne de code.
OriginalL'auteur | 2015-02-18
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas itérateur comme résultat mais directement la valeur, vous pouvez déférence le résultat directement:
OriginalL'auteur Jarod42
éviter un aller-retour du conteneur:
OriginalL'auteur CapelliC
Vous pouvez trier votre liste et de prendre le premier et le dernier élément que min et max en conséquence:
n log(n)
au lieu den
.de plus la complexité des calculs, mais très simple solution pour moi
OriginalL'auteur vahancho