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

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

請問為什么使用迭代器而不是數組索引?

請問為什么使用迭代器而不是數組索引?

C++
犯罪嫌疑人X 2019-09-03 09:04:48
為什么使用迭代器而不是數組索引?使用以下兩行代碼: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 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

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

T elem = some_vector[i];

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

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

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



查看完整回答
反對 回復 2019-09-04
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

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


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


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

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



查看完整回答
反對 回復 2019-09-04
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

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

即使從主站的角度看,他們也是一團糟。這并不是因為他們,而是因為在幕后所發(fā)生的所有別名。我怎么知道您還沒有實現自己的虛擬向量或數組列表,這與標準完全不同。我知道運行時當前的類型是什么嗎?你是否超載了一個操作員,我沒有時間檢查你所有的源代碼。我知道你用的是什么版本的STL嗎?

迭代器的下一個問題是漏抽象,盡管有許多網站與它們進行了詳細的討論。

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



查看完整回答
反對 回復 2019-09-04
  • 3 回答
  • 0 關注
  • 377 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號