国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

stl容器的遍歷效率分析

2019-11-06 06:02:25
字體:
來源:轉載
供稿:網友

原創(chuàng)不易,轉載注明 http://blog.csdn.net/yp541118319/article/details/60769214

寫LeetCode時發(fā)現算法過程無差異,而最終的submission的runtime卻有3ms的差別。而其中唯一不同的就是vector的遍歷方式,一個使用了iterator,另一個使用了for。 查了一下各種經典,發(fā)現這微小的差異實際上是C與C++之間的差異。

遍歷

最頻繁的操作就是訪問元素。而iterator使用的是迭代器遞增,for使用的是at(i)或者[i]。

提供隨機訪問(Randomaccess)iterator的容器(vector, string, array)

iterator疊加步進,而for使用數組下標偏移,效率都是常量級的。在runtime上的細微差別就是C++封裝(模板、類)帶來的性能消耗。但是對比程序設計和編碼上的便利,這種消耗還是很值得。

只提供雙向訪問(Bidirectional)iterator的容器(map, list, set)

兩種方式的性能就大相庭徑了。iterator依然是疊加步進,for使用的查詢對應到具體的數據結構就是二叉樹、鏈表等,這類數據結構的查詢效率最高也達不到常量級,runtime上差異肯定隨著數據量的增加而增大。

參考

http://blog.csdn.net/c1347623993/article/details/9209767


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 砚山县| 库尔勒市| 汾西县| 巴塘县| 澄江县| 周至县| 临清市| 从化市| 江川县| 安宁市| 临夏县| 云霄县| 桃源县| 封丘县| 澎湖县| 汝阳县| 雅江县| 平顺县| 泽普县| 股票| 凤台县| 华容县| 庆元县| 西藏| 修武县| 台江县| 建湖县| 蒙阴县| 南漳县| 炉霍县| 舞钢市| 拜泉县| 永和县| 连山| 疏附县| 桐乡市| 通山县| 湖南省| 孝感市| 乌什县| 克东县|