泛型算法(二十三)之排列算法
1、is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2):C11版本,判斷兩個(gè)序列是否為同一元素集的兩個(gè)排列。
std::vector<int> c1 = {1, 2, 3, };std::vector<int> c2 = {1, 2, 3, 1, 3};//判斷兩個(gè)序列是否為同一元素集的兩個(gè)排序bool i = std::is_permutation(c1.begin(), c1.end(), c2.begin());std::cout << (int)i;//打印結(jié)果:12、is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, BinaryPredicate pred):C11版本,重載版本。
自己實(shí)現(xiàn)pred,向算法定制操作。
3、next_permutation(BidirectionalIterator first, BidirectionalIterator last):n個(gè)元素有n!種排列。這些排列中,規(guī)定升序序列為最小排列,降序序列為最大的排列,任意兩個(gè)排列按照字典序分出大小。該函數(shù)返回當(dāng)前序列作為一個(gè)排列按字典序的下一個(gè)排列。
std::vector<int> c = {1, 2, 3, 4, 5};std::next_permutation(c.begin(), c.end());for (auto var : c){std::cout << var << ",";}//打印結(jié)果:1,2,3,5,4,4、next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp):重載版本。
自己實(shí)現(xiàn)comp,向算法定制操作。
5、prev_permutation(BidirectionalIterator first, BidirectionalIterator last):返回當(dāng)前序列作為一個(gè)排列按字典序的上一個(gè)排列。
std::vector<int> c = {1, 2, 3, 4, 5};std::prev_permutation(c.begin(), c.end());for (auto var : c){std::cout << var << ",";}//打印結(jié)果:5,4,3,2,1,6、prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp):重載版本。
自己實(shí)現(xiàn)comp,向算法定制操作。
轉(zhuǎn)載于:https://www.cnblogs.com/dongerlei/p/5147591.html
總結(jié)
以上是生活随笔為你收集整理的泛型算法(二十三)之排列算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ubuntu系统---以virtuale
- 下一篇: JQuery中text(),html()