泛型演算法:不完全排序nth_element()
技術標籤:c++標準庫中的演算法
#define debug qDebug()<<
int main(int argc, char *argv[])
{
QVector<int> vec{3,2,5,1,6,9,4,7};
std::nth_element(vec.begin(), vec.begin() + 4, vec.end());
debug vec;
}
要對序列進行完全排序是這樣的:
nth_element()保證:
1、*(vec.begin() + 4) = 5
2、vec.begin ~ (vec.begin + 3) 的值都小於5,但它們內部不保證有序
3、後面的值都大於5,但也不保證有序
還有自定義排序規則的版本,不綴訴。
相關推薦
泛型演算法:不完全排序nth_element()
技術標籤:c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:部分排序演算法partial_sort()、partial_sort_copy()
技術標籤:c++標準庫中的演算法 1、partial_sort()對部分個數元素進行排序並移到序列前面
標準庫中的泛型演算法:查詢元素演算法find()
技術標籤:容器 《c++ primer》10.1章節 大多數演算法定義在algorithm標頭檔案。 查詢元素演算法:find()
泛型演算法:求和演算法accumulate()
技術標籤:c++標準庫中的演算法 標頭檔案:#include <numeric> accumulate(start迭代器,end迭代器,和的初值)
泛型演算法:替換演算法replace()、replace_copy()
技術標籤:c++標準庫中的演算法 1、replace() 自定義資料型別使用replace()的前提是過載了"=="運算子。
泛型演算法:拷貝演算法copy()
技術標籤:c++標準庫中的演算法 struct ceshi { int frist = 0; int second = 0; }; int main(int argc, char *argv[])
泛型演算法:判斷是否有元素滿足條件演算法any_of()、 none_of()、all_of()
技術標籤:c++標準庫中的演算法 1、any_of() 是否有滿足條件的元素 QStringList list;
泛型演算法:比較兩個序列匹配演算法mismatch()
技術標籤:c++標準庫中的演算法 equal()演算法也能判斷兩個序列是否相等,不過只能判斷是否相等不能獲取不相等的位置。泛型演算法:判斷序列相等演算法equal()
泛型演算法:獲取序列中元素在另一序列中第一次出現位置演算法find_first_of()
技術標籤:c++標準庫中的演算法 QStringList list1; list1<<"aa"<<"bb"<<"cc"<<"dd"<<"aa"<<"ab"<<&q
泛型演算法:將同一個序列中兩個有序的子序列合併成一個有序的子序列演算法inplace_merge()
技術標籤:c++標準庫中的演算法 inplace_merge(begin,mid,end)要求begin~mid,mid~end之間分別有序。
泛型演算法:查詢初始最長有序子序列演算法is_sorted_until()
技術標籤:c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:判斷序列是否有序is_sorted()
技術標籤:c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:打亂序列演算法shuffle()
技術標籤:c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:翻轉序列演算法reverse()、reverse_copy()
技術標籤:c++標準庫中的演算法 1、reverse() #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:判斷序列間是否是包含關係演算法includes()
技術標籤:c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:字典序比較演算法lexicographical_compare()
技術標籤:# c++標準庫中的演算法 #define debug qDebug()<< int main(int argc, char *argv[])
泛型演算法:旋轉序列演算法rotate()、rotate_copy()
技術標籤:c++標準庫中的演算法 1、rotate() int main(int argc, char *argv[]) { QVector<int> vec{1,2,3,4,5,6,7,8,9};
泛型演算法:處理容器元素並將結果存到另外容器的演算法transform()
技術標籤:c++標準庫中的演算法 transform()有兩個版本 一元謂詞版 QStringList list; auto it = std::inserter(list,list.begin());//每次插入將在begin()處插入
C++ STL:泛型演算法lower_bound用於關聯容器set等的坑
1.問題匯入(背景): 我在寫某道程式設計競賽題的時候需要對set裡面的元素(型別為pair<int,int>)進行查詢,眾所周知set自帶lower_bound函式。但是我的需求是比較pair<int,int>的大小時優先考慮second
C++演算法與泛型演算法(algorithm、numeric)
本文包括的演算法有: 只讀演算法:find()、count()、accumulate()、equal() 寫演算法:fill()、fill_n()、back_inserter()、copy()、copy_backward()、replace()、replace_copy()、next_permutation()、prev_permu