久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

基于范圍的 for 循環對性能有益嗎?

Is the ranged based for loop beneficial to performance?(基于范圍的 for 循環對性能有益嗎?)
本文介紹了基于范圍的 for 循環對性能有益嗎?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在 Stack Overflow 上閱讀有關 C++ 迭代器和性能的各種問題**,我開始懷疑 for(auto& elem : container) 是否被編譯器擴展"為最佳版本?(有點像 auto,編譯器會立即推斷出正確的類型,因此永遠不會變慢,有時會更快).

Reading various questions here on Stack Overflow about C++ iterators and performance**, I started wondering if for(auto& elem : container) gets "expanded" by the compiler into the best possible version? (Kind of like auto, which the compiler infers into the right type right away and is therefore never slower and sometimes faster).

** 比如你寫的有沒有關系

** For example, does it matter if you write

for(iterator it = container.begin(), eit = container.end(); it != eit; ++it)

for(iterator it = container.begin(); it != container.end(); ++it)

對于非失效容器?

推薦答案

標準是你的朋友,見[stmt.ranged]/1

The Standard is your friend, see [stmt.ranged]/1

對于表單的基于范圍的語句

For a range-based for statement of the form

for ( for-range-declaration : expression ) statement

讓 range-init 等價于括號括起來的表達式

let range-init be equivalent to the expression surrounded by parentheses

( expression )

以及基于范圍的 for 形式的語句

and for a range-based for statement of the form

for ( for-range-declaration : braced-init-list ) statement

讓 range-init 等同于花括號初始化列表.在每種情況下,基于范圍的 for 語句等效于

let range-init be equivalent to the braced-init-list. In each case, a range-based for statement is equivalent to

{
  auto && __range = range-init;
  for ( auto __begin = begin-expr,
             __end = end-expr;
        __begin != __end;
        ++__begin )
  {
    for-range-declaration = *__begin;
    statement
  }
}

是的,該標準保證實現最佳形式.

So yes, the Standard guarantees that the best possible form is achieved.

對于許多容器,例如 vector,在此迭代期間修改(插入/擦除)它們是未定義的行為.

And for a number of containers, such as vector, it is undefined behavior to modify (insert/erase) them during this iteration.

這篇關于基于范圍的 for 循環對性能有益嗎?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

What do compilers do with compile-time branching?(編譯器如何處理編譯時分支?)
Can I use if (pointer) instead of if (pointer != NULL)?(我可以使用 if (pointer) 而不是 if (pointer != NULL) 嗎?)
Checking for NULL pointer in C/C++(在 C/C++ 中檢查空指針)
Math-like chaining of the comparison operator - as in, quot;if ( (5lt;jlt;=1) )quot;(比較運算符的數學式鏈接-如“if((5<j<=1)))
Difference between quot;if constexpr()quot; Vs quot;if()quot;(“if constexpr()之間的區別與“if())
C++, variable declaration in #39;if#39; expression(C++,if 表達式中的變量聲明)
主站蜘蛛池模板: 在线亚洲天堂 | 亚洲一级特黄 | 怡红院久久| 欧美精品一二三区 | 免费黄色在线 | 一区二区视频在线 | 久久九九99 | 三级久久久 | 黄色大片免费在线观看 | 在线h片 | 精品国产99 | 日韩中文字幕一区二区三区 | 亚洲一区二区久久 | 欧美黄色一级视频 | 欧美激情视频网站 | 欧美日韩亚洲一区二区三区 | 国产午夜精品一区二区三区四区 | av网站在线看 | 黑人精品一区二区 | 国产精品高潮呻吟久久 | 一级黄色免费视频 | av网站免费看 | 亚洲一区免费 | 国产精品666 | 国产天天操 | 国产欧美日韩一区二区三区 | 香蕉视频一直看一直爽 | 久久久久久久久久国产精品 | 精品国产福利 | 亚洲第一区视频 | 国产精品91在线 | 婷婷五月在线视频 | 国产福利视频在线 | 国产福利一区二区三区 | 在线a| 国产高清av | 亚洲人成在线播放 | 亚洲激情综合网 | 亚洲视频在线观看 | 亚洲精品网站在线观看 | 欧美一区三区 |