QMutableListIterator vs. for mit Referenz

Alles rund um die Programmierung mit Qt
Antworten
carre
Beiträge: 15
Registriert: 28. Juni 2014 13:59

QMutableListIterator vs. for mit Referenz

Beitrag von carre »

Hi,

ich habe eine QList<struct> wo ich Werte innerhalb der Struct (bei allen QList Elementen) ändern möchte.

Lösung 1:

Code: Alles auswählen

  for (model_def_struct & model_entry : model_data.model_definition)
  {
     model_entry.model_found_count = 0;
  }
 
Lösung 2 (via Iterator):

Code: Alles auswählen

  QMutableListIterator<model_def_struct> model_entry(model_data.model_definition);
  while (model_entry.hasNext()) {
     model_entry.next().model_found_count = 0;
  }
Meine Frage wäre einfach - spricht etwas gegen Lösung 1 bzw. gibt es irgendwas warum man eher Lösung 2 nehmen soll?
Oder ist es eine reine Geschmackssache?

Danke und Gruß
Thomas
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QMutableListIterator vs. for mit Referenz

Beitrag von hilefoks »

ja, im Fall von Qt kann das einen bedeutenden Unterschied machen. Dazu muss man verstehen, das Qt Container implicit shared sind. Die C++11 for-each Schleife verwendet einen nicht konstanten Iterator. Damit kann ein Qt Container praktisch gezwungen sein eine Kopie von sich selbst zu erzeugen auf der dann gearbeitet wird. Hält der Container nicht gerade Pointer (oder vergleichbares), dann änderst du aber nur eine Kopie, nicht das Original.
Antworten