Mateusz Loskot<br>Thanks!! 
I&#39;ll keep this in mind. It&#39;s really important to good performance. <br><br><div class="gmail_quote">2009/3/29 Joaquim Luis <span dir="ltr">&lt;<a href="mailto:jluis@ualg.pt">jluis@ualg.pt</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thankx<br>
<br>
I&#39;ll keep this in mind if I ever one day start practicing C++<br>
For the time being, only good old C.<br>
<br>
Joaquim<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">
Joaquim Luis wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Mateusz Loskot wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

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