轉接自stl演算法
1. equal(v1.beg,v1.end,v2.beg,perd) 判斷v1區間是否所有元素與v2子區間對應滿足謂詞perd
2. is_permutation(v1.beg,v1.end,v2.beg,perd) 判斷v1區間是否任何元素都能在v2子區間找到滿足謂詞perd
3. mismatch() 返回兩段序列第一次出現對應位置不相等的pair值
4. lexicographical_compare() 判斷在字典排序下某序列是否小於另一串行
5. is_sorted() 判斷區間元素是否排過序
6. is_sorted_until() 返回區間第乙個未遵守排序準則的元素
7. is_partitioned() 判斷區間能否通過謂詞條件分為兩組
8. partition_point() 返回分為兩組的開始元素
9. is_heap() 區間元素是否形成heap(堆)
10. 10. is_heap_until() 返回區間內第乙個不滿足形成堆的元素
11. all_of() 是否區間所有元素滿足謂詞pred
12. any_of() 是否至少有乙個元素滿足謂詞pred
13. none_of() 是否區間無元素滿足謂詞
#include
#include
#include
#include
using
namespace
std;
// 1. equal(v1.beg,v1.end,v2.beg,perd) 判斷v1區間是否所有元素與v2子區間對應滿足謂詞perd
// 2. is_permutation(v1.beg,v1.end,v2.beg,perd) 判斷v1區間是否任何元素都能在v2子區間找到滿足謂詞perd
// 3. mismatch() 返回兩段序列第一次出現對應位置不相等的pair值
// 4. lexicographical_compare() 判斷在字典排序下某序列是否小於另一串行
// 5. is_sorted() 判斷區間元素是否排過序
// 6. is_sorted_until() 返回區間第乙個未遵守排序準則的元素
// 7. is_partitioned() 判斷區間能否通過謂詞條件分為兩組
// 8. partition_point() 返回分為兩組的開始元素
// 9. is_heap() 區間元素是否形成heap(堆)
// 10.is_heap_until() 返回區間內第乙個不滿足形成堆的元素
// 11.all_of() 是否區間所有元素滿足謂詞pred
// 12.any_of() 是否至少有乙個元素滿足謂詞pred
// 13.none_of() 是否區間無元素滿足謂詞
void test(const
vector
& a,const
vector
& b)
; vector
v2;
if (is_permutation(v1.begin(), v1.end(), v2.begin()))
cout
<< "v1 of v2 by unsorted "
<< endl;
else
cout
<< "v1 not of v2 by unsorted"
<< endl;
//3auto pair = mismatch(v1.begin(),v1.end(), v2.begin());
if (pair.first != v1.end())
//4string s1 = "marco";
string s2 = "working";
if (lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end()))
cout
<< "s1 < s2 by dictionary-sort"
<< endl;
//5vector
v3;
//預設謂詞是less<>()
if (is_sorted(v3.begin(), v3.end(),less()))
cout
<< "v3 had sorted"
<< endl;
//6vector
v4;
auto fpos = is_sorted_until(v4.begin(), v4.end(), greater());
if (fpos != v4.end())
auto f = (const
int& value)
;//7
if (is_partitioned(v4.begin(), v4.end(), f))
cout
<< "v4 has can divide by value > 6"
<< endl;
//8auto partpos = partition_point(v4.begin(), v4.end(), f);
if (partpos != v4.end())
cout
<< "the start divide pos is "
<< *partpos << endl;
//9vector
v5;
if (is_heap(v5.begin(), v5.end()))
cout
<< "v5 can develop to heap"
<< endl;
//10
auto heapos = is_heap_until(v5.begin(), v5.end());
if (heapos != v5.end())
cout
<< "since "
<< *heapos << " it can't develop to heap"
<< endl;
vector
v6;
auto f1 = (const
int& value)
;//11 12 13
if (!all_of(v6.begin(), v6.end(), f1))
cout
<< "not all >= 5"
<< endl;
if (any_of(v6.begin(), v6.end(), f1))
cout
<< "at least has a >=5"
<< endl;
if (none_of(v6.begin(), v6.end(), f1))
cout
<< "none >= 5"
<< endl;
}int main()
; vector
vec1;
test(vec0, vec1);
system("pause");
return
0;}
STL之演算法
演算法是指解決問題的方 而完整的描述,對於規範的輸入,在有限時間內要獲得所需要的輸出。不同的演算法可能使用不同的時間 空間或效率完成同樣的任務。想要評估乙個演算法的好壞,目前可以通過時間複雜度和空間複雜度來進行衡量。時間複雜度,是指演算法執行指令所需的計算量。演算法的執行時間和其所要處理的資料之間存...
STL 用純函式做判斷式
一 必要的概念 判斷式是返回bool 或者其他可以隱式轉化為bool的東西 判斷式在stl中廣泛使用。標準關聯容器的比較函式是判斷式,判斷式函式常常作為引數傳遞給演算法,比如find if和多種排序演算法。純函式是返回值只依賴於引數的函式。如果f是乙個純函式,x和y是物件,f x,y 的返回值僅當x...
STL之關聯式容器
sets 沒有重疊的數字,沒有權利指定新元素的位置 set typedef std set obj obj col col.insert 3 col.insert 1 col.insert 5 col.insert 4 col.insert 1 col.insert 6 col.insert 2 f...