Click here to Skip to main content
15,879,326 members
Articles / Programming Languages / C++
Tip/Trick

Increment/Decrement operators

Rate me:
Please Sign up or sign in to vote.
4.40/5 (3 votes)
2 Mar 2010CPOL 19.2K   1   9
When incrementing or decrementing a variable, favor prefix operators over postfix operators if you do not need the value of the expression.Example:void foo(std::vector intvec){ for (std::vector::iterator it = intvec.begin(); it != intvec.end(); ++it) { // do something ...
When incrementing or decrementing a variable, favor prefix operators over postfix operators if you do not need the value of the expression.

Example:
void foo(std::vector<int> intvec)
{
   for (std::vector<int>::iterator it = intvec.begin(); it != intvec.end(); ++it)
   {
      // do something
   }
}


The reason for this is that postfix operators (such as it++) need to create a copy of the original variable. This copy is being used as a placeholder that later can be used as the value of the postfix expression. A prefix operator does not need to do that, as the value of a prefix increment or decrement expression is the value of the variable after the operation.

The cost of creating an additional temp might be trivial for integral types, but often ++/-- operators are defined for non-trivial types, and by their very nature they are being used in loop constructs.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Switzerland Switzerland
Graduated at TU Darmstadt in Math & CS, with a heavy focus on CAD/CAM

Programming and designing applications in C++ in the areas AI, real-time programming, client-server applications and CAD/CAM since 1985.

Personal interests: AI, computer graphics, games, reading

Comments and Discussions

 
GeneralMy vote of 1 Pin
Yoldas Askan15-Sep-14 7:00
Yoldas Askan15-Sep-14 7:00 
QuestionIs there any standard that requires creation of a temp? Pin
supercat92-Mar-10 6:59
supercat92-Mar-10 6:59 
AnswerRe: Is there any standard that requires creation of a temp? Pin
Tim Craig2-Mar-10 8:49
Tim Craig2-Mar-10 8:49 
AnswerRe: Is there any standard that requires creation of a temp? Pin
dwilliss2-Mar-10 15:44
dwilliss2-Mar-10 15:44 
GeneralRe: Is there any standard that requires creation of a temp? Pin
Tim Craig2-Mar-10 21:38
Tim Craig2-Mar-10 21:38 
GeneralRe: Is there any standard that requires creation of a temp? Pin
Stefan_Lang2-Mar-10 22:25
Stefan_Lang2-Mar-10 22:25 
GeneralRe: Is there any standard that requires creation of a temp? Pin
supercat93-Mar-10 7:35
supercat93-Mar-10 7:35 
GeneralRe: Is there any standard that requires creation of a temp? [modified] Pin
Stefan_Lang3-Mar-10 23:22
Stefan_Lang3-Mar-10 23:22 
GeneralRe: Is there any standard that requires creation of a temp? Pin
supercat94-Mar-10 5:00
supercat94-Mar-10 5:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.