dokumentacji QT mówi co następuje:Dlaczego należy wykonać kopię jako pierwszą w przypadku korzystania z iteratora na niejawnie udostępnionym kontenerze?
Dzięki niejawny dzielenia się, że jest bardzo tani za funkcją powrotu pojemnik na wartości. API Qt zawiera dziesiątki funkcji, które zwracają QList lub QStringList na wartość (np. QSplitter :: sizes()). Jeśli chcesz iterować po nich za pomocą iteratora STL, powinieneś zawsze wziąć kopię pojemnika i powtórzyć kopię. Na przykład:
// RIGHT
const QList<int> sizes = splitter->sizes();
QList<int>::const_iterator i;
for (i = sizes.begin(); i != sizes.end(); ++i)
...
// WRONG
QList<int>::const_iterator i;
for (i = splitter->sizes().begin();
i != splitter->sizes().end(); ++i)
...
Co się stanie, jeśli stosowana jest „niewłaściwy” sposób?