Op 26-4-2012 18:47, Nikos Chantziaras schreef: > On 26/04/12 19:01, André Somers wrote: >> Op 23-4-2012 20:44, Nikos Chantziaras schreef: >>> Then you're not doing what you think you're doing: >>> >>> QList< QList<int> > listOfLists; >>> QList<int> listOfInts; >>> listOfInts.append(10); >>> >>> listOfLists.append(listOfInts); >>> listOfLists[0][0] = 9; >>> >>> qDebug()<< listOfLists[0][0]<< listOfInts[0]; >>> >>> You are modifying a copy, so it prints"9 10" instead of"10 10". This: >>> >>> listOfLists[0][0] = 9; >>> >>> modifies a copy of listOfInts. Also the reverse is true. If you modify >>> listOfInts, then the copy of it inside listOfLists is not updated. >>> >>> "Implicit sharing" means that data is copied when it's modified. It's >>> not a replacement for pointers. >>> >> Not true, in this case. > I posted code that proves my point. It prints "9 10". You can't argue > with that one ;-) The copy is made at the moment you _append_ the list, not at the moment you're modifying it. That's a big difference. So yes, your code prints "9 10", and it should! However, the issue was about if you could modify what's in that nested list. You said: > Note that with QList< QList<int> > you can't modify the other lists. You'd only be modifying the copies.
Your own code proves that you *can* modify the data inside the nested lists. But of course, everything you *put* in any list, is a copy. That also goes for lists that you put in a list-of-lists. André _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest