Mathias Hasselmann schreef op 8-2-2015 om 22:28:

Am 08.02.2015 um 14:28 schrieb Marc Mutz:

c. Using QMap. As Alex Stepanov put it: every use of a map should be discussed
     in a face-to-face meeting with your manager. Since we don't have that, I'd
     change this to: Everyone wishing to use a QMap should implement one before
     using it for the first time. Then you'd see what you inflict on the world.

     In the vast majority of cases, a sorted vector is much faster, due to
     locality-of-reference. A RB-tree is optimized for wildly mixing insertions,
     lookups, and removals. When you can batch updates and separate them from
     lookups, time-wise, then a sorted vector is usually preferrable.
I totally agree, thank you for raising this. Sadly a sorted vector isn't
as convenient to use as a map. Maybe there should some convenience API
added, Or does it exist already and I am just too ignorant to know it?
How about this?

|template<  typename  T>
typename  std::vector<T>::iterator
   insert_sorted(  std::vector<T>  &  vec,  Tconst&  item)
{
    return  vec.insert
( std::upper_bound( vec.begin(), vec.end(), item),
            item
        );
}|

(from http://stackoverflow.com/a/25524075/2151404)

Something like this should work just as well on QVector, right? If you are doing multiple inserts, perhaps you should keep the inserts outside the main vector while you make them, and only at the end do a single std::merge.

André

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to