久久久久久久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 表達式中的變量聲明)
主站蜘蛛池模板: 日韩欧美精品一区 | 国产精品九九九 | 国产精品久久久久无码av | 国产成人精品久久二区二区 | av三级 | 久久免费精品 | 亚洲成人综合社区 | 久久精品在线播放 | www.久| 欧美人成在线视频 | 国产免费高清 | 国产精品视频在线观看 | 91免费观看 | av天天看 | 国产精品777一区二区 | 91免费入口| 亚洲一区二区视频在线播放 | 日韩中文不卡 | 日韩中文字幕视频在线 | 国产精品av久久久久久久久久 | 中文字幕一区二区三区四区五区 | 久久久久久久久久久久一区二区 | 成人免费视屏 | 国产激情视频在线免费观看 | 亚洲午夜精品一区二区三区他趣 | 国产原创视频 | 午夜精品 | 啪啪免费网站 | 激情六月丁香婷婷 | 欧美精品综合 | 一区二区三区视频在线观看 | 日韩成人免费视频 | 中文字幕在线视频精品 | 亚洲成人一区 | 在线观看日本高清二区 | 国产在线中文字幕 | 亚洲人成在线播放 | 91亚洲国产成人久久精品网站 | 福利精品| 97国产精品视频人人做人人爱 | 东京av男人的天堂 |