[英]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.