1.確保目標(biāo)空間足夠大
2.了解各種與排序有關(guān)的選擇
如果需要對(duì)vector、string、deque或者數(shù)組中的元素執(zhí)行一次完全排序,那么可以使用sort或者stable_sort。
如果有一個(gè)vector、string、deque或者數(shù)組,并且只需要對(duì)等價(jià)性最前面的n個(gè)元素進(jìn)行排序,那么可以使用partial_sort。
如果有一個(gè)vector、string、deque或者數(shù)組,并且需要找到第n個(gè)位置上的元素,或者,需要找到等價(jià)性最前面的n個(gè)元素但又不必對(duì)這n個(gè)元素進(jìn)行排序,那么,nth_element正是你所需要的函數(shù)。
如果需要將一個(gè)標(biāo)準(zhǔn)序列容器中的元素按照是否滿(mǎn)足某個(gè)特定的條件區(qū)分開(kāi)來(lái),那么,partition和stable_partition可能正是你所需要的。
如果你的數(shù)據(jù)在一個(gè)list中,那么你仍然可以直接調(diào)用partition和stable_partition算法;可以用list::sort來(lái)替代sort和stable_sort算法。但是,如果你需要獲得partial_sort或nth_element算法的效果,那么,正如前面我所提到的那樣,你可以有一些簡(jiǎn)潔的途徑來(lái)完成這項(xiàng)任務(wù)。
3。如果確實(shí)需要?jiǎng)h除元素,則需要在remove這一類(lèi)算法之后調(diào)用erase。
remove不是真正意義上的刪除,因?yàn)樗霾坏健?br />
4.對(duì)包含指針的容器使用remove這一類(lèi)算法時(shí)要特別小心。會(huì)導(dǎo)致資源泄露。
5.了解哪些算法要求使用排序的區(qū)間作為參數(shù)。
6.通過(guò)mismatch或lexicographical_compare實(shí)現(xiàn)簡(jiǎn)單地忽略大小寫(xiě)的字符串比較
7.理解copy_if算法的正確實(shí)現(xiàn)
8.使用accumlate或者for_each進(jìn)行區(qū)間統(tǒng)計(jì)。