D10742: get rid of the raw KFileItem pointers in KCoreDirListerCache
Mark Gaiser
noreply at phabricator.kde.org
Thu Feb 22 15:25:59 UTC 2018
markg added a comment.
I unfortunately have no clue how to answer your questions.
INLINE COMMENTS
> kcoredirlister.cpp:825-829
> + // If take remove the element from the list.
> + if (take) {
> + dirItem->lstItems.erase(it);
> + }
> + return retKFileItem;
Hmm, this looks weird to me.
Sure, it works. "KFileItem retKFileItem = *it;" makes a copy.
A more efficient way (but requires you to change the lists this is backed by to a std::vector) is to:
1. Take the element out of the vector. Something like "KFileItem item = std::move(*it);
2. Now the vector would be in a valid state but with one invalid object (will post a problem if you iterate over it later on) so you have to remove that element from the vector like you did.
I'm not sure if the benefits of this justify the path of changing the list (dirItem->lstItems) to a std::vector, if possible at all.
That's up to you :)
REPOSITORY
R241 KIO
REVISION DETAIL
https://phabricator.kde.org/D10742
To: jtamate, #frameworks, dfaure
Cc: markg, michaelh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20180222/707e15c5/attachment.html>
More information about the Kde-frameworks-devel
mailing list