簡體   English   中英

澄清迭代器上的后綴/前綴運算符

[英]Clarification on postfix/prefix operators on iterators

他在Andrew Koenig Accelerated C++編寫了以下代碼,以介紹模板和泛型函數。 此代碼是否跳過容器中的第一個元素? 還是在遞增之前復制第一個迭代器對象:

template<class In, class Out>
Out copy(In begin, In end, Out dest)
{
while (begin != end)
    *dest++ = *begin++;
return dest;
}

換句話說,這是否與他的代碼一樣?

template<class In, class Out>
Out copy(In begin, In end, Out dest)
{
while (begin != end)
    *dest = *begin;
    dest++;  begin++;
return dest;
}

后增加迭代器(或與此有關的任何其他事情)可能看起來令人困惑,但它所做的卻很簡單。 它會復制該值,遞增原始值,然后返回該副本。 因此,用“ * dest ++”引用的位置與“ * dest”相同,唯一的區別是語句完成后,dest現在將引用可迭代對象中的下一個迭代。

唯一的問題是當程序員在同一表達式中重復使用遞增變量時。 (通常僅用作腦筋急轉彎,其效果因語言而異)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM