《STL源码剖析》学习--STL体现的思想
STL總是盡量做到節省內存且效率最高,在看本書中也越來越有深的體會。這里搜集一個stl中提高效率的方法。
1.對象的復制、析構等
如果將一個區間中的所有的對象析構掉,這是如果范圍很大,每個析構都是無關痛癢的,對效率有很大傷害。
負責對象析構的destroy()有兩個版本,第一個版本直接調用對象的析構函數;第二個版本,如果對象的析構是無關痛癢的(其__type_traits<T>是true),則什么也不做,否則,調用第一個版本。
同理復制操作,如果復制操作是trivial assignmentoperator,則復制直接以最快的內存對拷貝方式(memmove())完成。
2.算法
stl的算法優化非常好,針對不同的迭代器,如forward、bidirectional、random iterator等,因為元素的訪問規則不一樣,設計了不同的算法。
stl算法中經常使用雙層架構,一般稱呼上層函數為dispatch function(分派函數、派送函數),令函數傳遞調用過程中產生迭代器類型(iterator category)的臨時對象,再利用編譯器的參數推導機制(argumentdeduction),自動調用某個函數。
上層函數調用時不分類型對待,其中來根據參數或者模板的類別,調用下層這個函數就會根據傳入的參數的類型分別重載不同的版本,來達到效率最高。一般嵌套調用的這個函數的某個參數為某個模板類型的value_type。
總結
以上是生活随笔為你收集整理的《STL源码剖析》学习--STL体现的思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《STL源码剖析》--知识点
- 下一篇: 一份好的简历应该是这样的(This Is