STL nth_element
生活随笔
收集整理的這篇文章主要介紹了
STL nth_element
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
nth_element(first,nth,last)
first,last 第一個和最后一個迭代器,也可以直接用數組的位置。?
nth,要定位的第nn?個元素,能對它進行隨機訪問.
將第n_thn_th?元素放到它該放的位置上,左邊元素都小于它,右邊元素都大于它.
測試代碼:
http://www.cplusplus.com/reference/algorithm/nth_element/
// nth_element example
#include <iostream> // std::cout
#include <algorithm> // std::nth_element, std::random_shuffle
#include <vector> // std::vectorbool myfunction (int i,int j) { return (i<j); }int main () {std::vector<int> myvector;// set some values:for (int i=1; i<10; i++) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9std::random_shuffle (myvector.begin(), myvector.end());// using default comparison (operator <):std::nth_element (myvector.begin(), myvector.begin()+3, myvector.end());// using function as compstd::nth_element (myvector.begin(), myvector.begin()+3, myvector.end(),myfunction);// print out content:std::cout << "myvector contains:";for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}
輸出:
myvector contains: 3 1 4 2 5 6 9 7 8
也就是找到第4大的數,但是左右兩側不一定排序
nth_element特別適合找中位數
std::nth_element(_vec.begin(), _vec.begin() + n - 1, _vec.end());
?
總結
以上是生活随笔為你收集整理的STL nth_element的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vector容器 begin()与end
- 下一篇: C++中string erase函数的使