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; ) 的区别:
这两个for循环的区别在于递增操作的时机和方式,它们会影响循环的行为。
for (; ++First != Last; )
:这个循环首先会将
First
递增,然后检查递增后的值是否等于Last
。意味着在每次循环迭代之前,都会先递增
First
,然后检查是否满足循环条件。如果
++First
的结果等于Last
,则循环会终止。for (; First++ != Last; )
:这个循环首先会检查
First
的当前值是否等于Last
,然后再将First
递增。意味着在每次循环迭代之前,都会先检查
First
是否满足循环条件,然后再递增First
。如果
First++
的结果等于Last
,则循环会终止。
这两种循环的区别在于递增操作的时机,因此它们可能会导致不同的行为,具体取决于 First
和 Last
的初始值以及它们在循环中的变化。在一些情况下,这种差异可能会影响程序的逻辑和结果。要根据具体的需求选择适当的循环形式。