第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么使用迭代器而不是數(shù)組索引?

為什么使用迭代器而不是數(shù)組索引?

C++
眼眸繁星 2019-07-22 12:12:36
為什么使用迭代器而不是數(shù)組索引?使用以下兩行代碼:for (int i = 0; i < some_vector.size(); i++){     //do stuff}這是:for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();     some_iterator++){     //do stuff}我聽說第二種方式更好。這到底是為什么?
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊

只有當(dāng)vector.size()是一個快速操作時,第一個表單才是有效的。這對于向量是正確的,但對于列表就不是這樣。另外,您計劃在循環(huán)的主體內(nèi)做什么?如果您計劃訪問元素,如

T elem = some_vector[i];

然后假設(shè)容器有operator[](std::size_t)定義。同樣,對于向量也是如此,但對于其他容器則不是這樣。

迭代器的使用使您更接近于容器獨(dú)立性。你不是在假設(shè)隨機(jī)存取能力或者快速size()操作,只有容器具有迭代器功能。

您可以通過使用標(biāo)準(zhǔn)算法進(jìn)一步增強(qiáng)代碼。根據(jù)你想要達(dá)到的目標(biāo),你可以選擇使用std::for_each()std::transform()諸若此類。通過使用標(biāo)準(zhǔn)算法而不是顯式循環(huán),您將避免重新發(fā)明車輪。您的代碼可能更高效(如果選擇了正確的算法)、正確和可重用。



查看完整回答
反對 回復(fù) 2019-07-23
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊

這是現(xiàn)代C+灌輸過程的一部分。迭代器是迭代大多數(shù)容器的唯一方法,所以即使使用向量,也是為了讓自己進(jìn)入正確的心態(tài)。說真的,這是我這么做的唯一原因-我想我從來沒有用另一種容器代替過向量。


哇,三周后投票還是被否決了。我想有點(diǎn)開玩笑是不劃算的。


我認(rèn)為數(shù)組索引更具可讀性。它與其他語言中使用的語法以及用于老式C數(shù)組的語法相匹配。也不那么冗長。效率應(yīng)該是一個清洗,如果你的編譯器是好的,而且?guī)缀鯖]有任何情況下,它是重要的。

即使如此,我仍然發(fā)現(xiàn)自己經(jīng)常使用向量迭代器。我相信迭代器是一個重要的概念,所以我會盡可能地推廣它。



查看完整回答
反對 回復(fù) 2019-07-23
?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個贊

我將在這里成為魔鬼的提倡者,而不是推薦迭代器。主要原因是,我從桌面應(yīng)用程序開發(fā)到游戲開發(fā)的所有源代碼都有我也不需要使用迭代器。一直以來,它們都是不需要的,其次,隱藏的假設(shè)和代碼混亂,以及迭代器帶來的調(diào)試噩夢,使它們成為不需要速度的應(yīng)用程序中使用它的最佳例子。

即使從主站的角度看,他們也是一團(tuán)糟。這并不是因?yàn)樗麄儯且驗(yàn)樵谀缓笏l(fā)生的所有別名。我怎么知道您還沒有實(shí)現(xiàn)自己的虛擬向量或數(shù)組列表,這與標(biāo)準(zhǔn)完全不同。我知道運(yùn)行時當(dāng)前的類型是什么嗎?你是否超載了一個操作員,我沒有時間檢查你所有的源代碼。我知道你用的是什么版本的STL嗎?

迭代器的下一個問題是漏抽象,盡管有許多網(wǎng)站與它們進(jìn)行了詳細(xì)的討論。

對不起,我沒有也仍然沒有看到迭代器有任何意義。如果他們把清單或向量從你身邊抽象出來,而實(shí)際上你應(yīng)該已經(jīng)知道了你要處理的是什么向量或清單,如果你不知道,那么你就會為將來的一些偉大的調(diào)試會議做好準(zhǔn)備。


查看完整回答
反對 回復(fù) 2019-07-23
  • 3 回答
  • 0 關(guān)注
  • 385 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號