[KPhotoAlbum] Using STL-containers in kphotoalbum code ?

Henner Zeller h.zeller at acm.org
Tue May 1 09:26:32 BST 2007


Hi,

I haven't seen any use of STL containers in the kphotoalbum code, so I
was wondering if it was 'allowed' ? Are there reasons only to use the
QT-containers ?
(Yes, STL really is available everywhere!)

The reasons why I am asking is because I need a set of elements, but
don't want to store the values (unecessary call to the copy
constructor), but only the pointers to it; the way you would do this
using the STL would be to write a comparator that takes the pointers
but compares the instances:

struct FooPtrLessThan
{
  bool operator()(const Foo* a, const Foo *b) const
  {
    return *a < *b;
  }
};

I don't see a way to do this with QMap or other containers in QT.
Disclaimer: I haven't done any QT/KDE programming since KDE 1.1 so I
might have missed something and happy to learn how this can be done
using the existing containers.

Reason for this all: There is a check in
ImageManager::RequestQueue::addRequest() that looks if an ImageRequest
to be added is already in the pending list. Since this is a linear
search, adding n elements is an O(n^2) operation - which makes showing
thumbnails on a big screen _very_ slow. Having the pending elements in
a set with the values being compared would help a lot here.

-henner



More information about the Kphotoalbum mailing list