परीक्षण करने के लिए यह लाना, मैं तीन स्रोत फ़ाइलें बनाया:
#include <map>
struct Foo { int a; double b; char c; };
typedef std::map<int, Foo> FMap;
### File 1 only ###
void Set(FMap & m, const Foo & f)
{
for (FMap::iterator it = m.begin(), end = m.end(); it != end; ++it)
it->second = f;
}
### File 2 only ###
void Set(FMap & m, const Foo & f)
{
for (FMap::iterator it = m.begin(); it != m.end(); ++it)
it->second = f;
}
### File 3 only ###
void Set(FMap & m, const Foo & f)
{
for (FMap::iterator it = m.begin(); it != m.end(); it++)
it->second = f;
}
### end ###
g++ -S -O3
साथ संकलन के बाद, जीसीसी 4.6.1, मुझे लगता है कि संस्करण 2 और 3 का उत्पादन समान विधानसभा, और संस्करण 1 अलग है केवल एक निर्देश में, cmpl %eax, %esi
बनाम cmpl %esi, %eax
।
तो, अपना चयन करें और अपनी शैली के अनुरूप जो भी उपयोग करें। उपसर्ग वृद्धि ++it
शायद सबसे अच्छा है क्योंकि यह आपकी आवश्यकताओं को सबसे सटीक रूप से व्यक्त करता है, लेकिन इसके बारे में लटका नहीं है।
स्रोत
2011-08-03 13:23:35
[इस] [1] पर एक नज़र डालें। [1]: http://stackoverflow.com/questions/24853/c-what-is-the-difference-between-i-and-i – sergio
अगर आप समय के किसी भी लम्बाई के लिए C++ कोड , '++ यह' दक्षता के लिए एक महत्वपूर्ण बढ़ावा प्रदान करेगा। आपके कोड में नहीं, लेकिन समय में लोगों को समझाते हुए आपने पहली बार '++ इसे' क्यों नहीं किया। चूंकि यह वास्तव में मामूली बात नहीं करता है, इसलिए आप ऐसा भी कर सकते हैं जिससे तर्क नहीं आएंगे। –
@ डेनिस: इससे कोई फर्क नहीं पड़ता * बहुत * और अक्सर मापने योग्य नहीं होगा, लेकिन तंग लूप में, इससे कोई फर्क पड़ सकता है। –