這篇文章主要介紹“C++怎么使用范圍for代替普通的for語句”,在日常操作中,相信很多人在C++怎么使用范圍for代替普通的for語句問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++怎么使用范圍for代替普通的for語句”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了網(wǎng)站制作、成都做網(wǎng)站,成都網(wǎng)站設(shè)計,1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
ES.71: 如果可以,使用范圍for語句代替普通的for語句。
Readability. Error prevention. Efficiency.
可讀性,防錯和效率。
Example(示例)
for (gsl::index i = 0; i < v.size(); ++i) // bad
cout << v[i] << '\n';
for (auto p = v.begin(); p != v.end(); ++p) // bad
cout << *p << '\n';
for (auto& x : v) // OK
cout << x << '\n';
for (gsl::index i = 1; i < v.size(); ++i) // touches two elements: can't be a range-for
cout << v[i] + v[i - 1] << '\n';
for (gsl::index i = 0; i < v.size(); ++i) // possible side effect: can't be a range-for
cout << f(v, &v[i]) << '\n';
for (gsl::index i = 0; i < v.size(); ++i) { // body messes with loop variable: can't be a range-for
if (i % 2 == 0)
continue; // skip even elements
else
cout << v[i] << '\n';
}
程序員或者好的靜態(tài)分析軟件或許可以判斷f(v,&v[i])中的v實際上并不存在副作用,因此該循環(huán)可以被重寫。通常情況下,最好避免在循環(huán)體中“亂用循環(huán)變量”。
Note(注意)
Don't use expensive copies of the loop variable of a range-for loop:
不要在循環(huán)體中進行代價高昂的循環(huán)變量拷貝。
for (string s : vs) // ...
This will copy each elements of vs into s. Better:
這會導致vs的每個元素都被拷貝。較好的做法是:
for (string& s : vs) // ...
Better still, if the loop variable isn't modified or copied:
如果循環(huán)變量不會被修改或拷貝,下面的做法更好。
for (const string& s : vs) // ...
檢查循環(huán)代碼,如果一個傳統(tǒng)的循環(huán)只是按照順序讀取每個元素,而且對元素的操作不存在副作用,使用范圍for語句重寫循環(huán)代碼。
到此,關(guān)于“C++怎么使用范圍for代替普通的for語句”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站標題:C++怎么使用范圍for代替普通的for語句
當前路徑:http://sd-ha.com/article24/iecdce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站營銷、外貿(mào)建站、網(wǎng)站設(shè)計公司、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)