C++中 ++X和X++
先看UE一段源碼
ForwardIt MaxElement(ForwardIt First, ForwardIt Last, PredicateType Predicate)
{
? ?ForwardIt Result = First;
? ?for (; ++First != Last; )
? ?{
? ? ? if (Predicate(*Result,*First))
? ? ? {
? ? ? ? ?Result = First;
? ? ? }
? ?}
? ?return Result;
}
for (; ++First != Last; ) 和 for (; First++ != Last; )?的區(qū)別:
這兩個(gè)for循環(huán)的區(qū)別在于遞增操作的時(shí)機(jī)和方式,它們會(huì)影響循環(huán)的行為。
for (; ++First != Last; )
:這個(gè)循環(huán)首先會(huì)將
First
遞增,然后檢查遞增后的值是否等于Last
。意味著在每次循環(huán)迭代之前,都會(huì)先遞增
First
,然后檢查是否滿足循環(huán)條件。如果
++First
的結(jié)果等于Last
,則循環(huán)會(huì)終止。for (; First++ != Last; )
:這個(gè)循環(huán)首先會(huì)檢查
First
的當(dāng)前值是否等于Last
,然后再將First
遞增。意味著在每次循環(huán)迭代之前,都會(huì)先檢查
First
是否滿足循環(huán)條件,然后再遞增First
。如果
First++
的結(jié)果等于Last
,則循環(huán)會(huì)終止。
這兩種循環(huán)的區(qū)別在于遞增操作的時(shí)機(jī),因此它們可能會(huì)導(dǎo)致不同的行為,具體取決于 First
和 Last
的初始值以及它們在循環(huán)中的變化。在一些情況下,這種差異可能會(huì)影響程序的邏輯和結(jié)果。要根據(jù)具體的需求選擇適當(dāng)?shù)难h(huán)形式。