C 11 基於範圍的循環的幕後
基於範圍的循環提供了一種簡潔的語法來迭代集合的元素,但它們的內部運作原理可能不會立即顯現出來。
變數初始化
雖然循環變數(在本例中為 x)似乎只初始化一次,現實是不同的。在基於範圍的循環中,例如:
<code class="cpp">for (const int x : vec) { cout << x << endl; }</code>
編譯器為每次迭代建立一個新的局部變數 x。它將 x 初始化為 vec 向量中下一個元素的值。
常數變數
儘管被宣告為 const,但 x 變數在每次迭代中似乎都會改變因為它不是同一個變數。每個新創建的 x 都會分配給 vec 的下一個元素,給人一種正在修改同一個變數的錯覺。
實作細節
實作了基於範圍的循環使用迭代器,迭代器是提供對集合元素的存取的物件。在上面的程式碼中,vec 有一個由 begin() 和 end() 函數傳回的迭代器。迭代器用於遍歷元素,x 被賦值給迭代器指向的值。
附加說明
以上是C 11 基於範圍的循環在幕後是如何運作的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!