[gdal-dev] create 25D MultiPolygon how to

Joaquim Luis jluis at ualg.pt
Sat Mar 28 15:25:53 EDT 2009


Thankx

I'll keep this in mind if I ever one day start practicing C++
For the time being, only good old C.

Joaquim

> Joaquim Luis wrote:
>> Mateusz Loskot wrote:
>>
>>>>  for(Roadway::RoadWayArray::iterator itrw = _roadwayArr.begin(); itrw !=
>>>> _roadwayArr.end();itrw++)
>>> ++itrw;
>>>
>>> if you care about performance.
>> Mateusz,
>>
>> Just curious. Why should that impact on performance?
> 
> The itrw here is most likely an iterator of type of user's class.
> The pointer arithmetic does work here only in terms of
> semantic, but not in terms of implementation.
> Meaning, both versions do the same - advance to next position:
> 
> int* p = ...; // or any ordinary type
> p++;
> 
> iterator it = ...;
> it++;
> 
> However, the realization is completely different.
> Here is example of how pre- and post-increment operator is usually
> declared in a class:
> 
> struct T
> {
>    T& operator++(); // pre-
>    T operator++(int); // post-
> };
> 
> The pre-increment operator returns reference to the object
> itself (return *this;)
> 
> The post-increment returns a temporary copy of the object.
> There are important side-effects of returning copy:
> 1. it is constructed -> copy-construction -> constructor called
> 2. it is returned by value -> copy-construction -> constructor called
> 
> Here is example of iterator and operator++ implementation:
> http://liblas.org/browser/trunk/include/liblas/iterator.hpp?rev813#L108
> 
> Object construction is considered in C++ as an expansive operation,
> next to dynamic storage allocation.
> If post-increment/decrement operator is used against pointers and
> integers, temporary object is also created, but as they are native
> types no constructor call is involved.
> 
> People report different measurements on Usenet groups. Numbers
> vary but can easily hit 50 % of performance increase if you
> stick to use of pre-increment/decrement operator for class types.
> 
> Best regards,



More information about the gdal-dev mailing list