国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 西贡区| 宜兰市| 神池县| 蓬莱市| 岱山县| 江源县| 平昌县| 屏东市| 河曲县| 泰来县| 泰顺县| 济宁市| 称多县| 应用必备| 吉首市| 来宾市| 苍梧县| 应用必备| 扶风县| 许昌县| 梁平县| 宾川县| 蓬莱市| 彭州市| 会昌县| 九龙坡区| 安阳县| 广州市| 徐州市| 和林格尔县| 山东省| 咸丰县| 于都县| 合水县| 江城| 玛多县| 扎兰屯市| 南陵县| 灵台县| 增城市| 呈贡县|