Effective STL(5)——算法
1.確保目標空間足夠大
2.了解各種與排序有關的選擇
如果需要對vector、string、deque或者數組中的元素執行一次完全排序,那么可以使用sort或者stable_sort。
如果有一個vector、string、deque或者數組,并且只需要對等價性最前面的n個元素進行排序,那么可以使用partial_sort。
如果有一個vector、string、deque或者數組,并且需要找到第n個位置上的元素,或者,需要找到等價性最前面的n個元素但又不必對這n個元素進行排序,那么,nth_element正是你所需要的函數。
如果需要將一個標準序列容器中的元素按照是否滿足某個特定的條件區分開來,那么,partition和stable_partition可能正是你所需要的。
如果你的數據在一個list中,那么你仍然可以直接調用partition和stable_partition算法;可以用list::sort來替代sort和stable_sort算法。但是,如果你需要獲得partial_sort或nth_element算法的效果,那么,正如前面我所提到的那樣,你可以有一些簡潔的途徑來完成這項任務。
3。如果確實需要刪除元素,則需要在remove這一類算法之后調用erase。
remove不是真正意義上的刪除,因為它做不到。
4.對包含指針的容器使用remove這一類算法時要特別小心。會導致資源泄露。
5.了解哪些算法要求使用排序的區間作為參數。
6.通過mismatch或lexicographical_compare實現簡單地忽略大小寫的字符串比較
7.理解copy_if算法的正確實現
8.使用accumlate或者for_each進行區間統計。
2.了解各種與排序有關的選擇
如果需要對vector、string、deque或者數組中的元素執行一次完全排序,那么可以使用sort或者stable_sort。
如果有一個vector、string、deque或者數組,并且只需要對等價性最前面的n個元素進行排序,那么可以使用partial_sort。
如果有一個vector、string、deque或者數組,并且需要找到第n個位置上的元素,或者,需要找到等價性最前面的n個元素但又不必對這n個元素進行排序,那么,nth_element正是你所需要的函數。
如果需要將一個標準序列容器中的元素按照是否滿足某個特定的條件區分開來,那么,partition和stable_partition可能正是你所需要的。
如果你的數據在一個list中,那么你仍然可以直接調用partition和stable_partition算法;可以用list::sort來替代sort和stable_sort算法。但是,如果你需要獲得partial_sort或nth_element算法的效果,那么,正如前面我所提到的那樣,你可以有一些簡潔的途徑來完成這項任務。
3。如果確實需要刪除元素,則需要在remove這一類算法之后調用erase。
remove不是真正意義上的刪除,因為它做不到。
4.對包含指針的容器使用remove這一類算法時要特別小心。會導致資源泄露。
5.了解哪些算法要求使用排序的區間作為參數。
6.通過mismatch或lexicographical_compare實現簡單地忽略大小寫的字符串比較
7.理解copy_if算法的正確實現
8.使用accumlate或者for_each進行區間統計。
posted on 2014-06-25 17:06 Daywei 閱讀(1453) 評論(0) 編輯 收藏 引用 所屬分類: C/C++