日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

幾個STL算法:includes,set

 ONLY_影 2015-02-06

includes:

測試有序序列中是否包含另一個序列的全部元素。

template<class inputIterator1, class inputIterator2>

bool includes(inputIterator1 first1, inputIterator1 last1,

                     inputIterator2 first2, inputIterator2 last2);

template<class inputIterator1 , class inputIterator2, class Comp>

bool includes(inputIterator1 first1, inputIterator1 last1,

                     inputIterator2 first2, inputIterator2 last2,

                     Comp cmp);

兩個序列必須都是排序的且相同的排序,Comp必須和兩個序列用相同的排序函數(shù)對象。

 

鑒于以上特點,用std::set<T>作為容器比較好。

 

 

set_differrence:包含在第一個有序集合中,但不包含第二個有序集合中的元素,這些不同的元素復制到最后一個參數(shù)中,最后一個參數(shù)是一個保存這些元素的容器的首迭代器,這個容器必須預先分配足夠的空間來容納元素。這些不同的元素也是有序的且排序方式與源有序集合一樣,另外Comp也必須和源有序集合采用同樣的排序方式。

兩個有序序列不可以有重疊。

返回的是在有序序列1而不是有序序列2中的元素。

 

template<class inputIterator1, class inputIterator2,

                class outputIterator>

outputIterator result =

set_difference(inputIterator1 first1, inputIterator1 last1,

                      inputIterator2 first2, inputIterator2 last2,

                      outputIterator first);

 

template<class inputIterator1, class inputIterator2,

                class outputIterator>

outputIterator result =

set_difference(inputIterator1 first1, inputIterator1 last1,

                      inputIterator2 first2, inputIterator2 last2,

                      outputIterator first, Comp cmp);

還是用set容器比較好。

 

 

set_intersection:同時包含第一個和第二個集合中的元素,這些元素被復制到最后一個參數(shù)中,最后一個參數(shù)是一個保存這些元素的容器的首迭代器,這個容器必須預先分配足夠的空間來容納元素。兩個集合都必須是有序的且是相同的排序。

基本上和set_difference用法一樣,只是找出交集而已。還是用set。

 

 

set_symmetric_difference:包含在第一個集合但是不包含在第二個集合中的元素,包含在第2個集合但是不包含在第1個集合中的元素,同時被復制到最后一個參數(shù)中。用法跟基本上和set_difference用法一樣。兩個集合都必須是有序的且是相同的排序。

 

 

set_union:包含兩個集合中所有元素的幾個,同時被復制到最后一個集合中。 兩個集合都必須是有序的且是相同的排序。

也就是求兩個元素的公共元素,用法基本同set_difference。

 

 

pre_permutation:重排區(qū)間中的元素,使得源序列變成按照字典序列的上一個序列,其中的“上一個”可由用戶自己定義。

template<class Iterator>

bool pre_permutation(Iterator first, Iterator last);

 

 

template<class Iterator, class Comp>

bool pre_permutation(Iterator first, Iterator last, Comp cmp);

int main()
{
 vector<int> p;
 p.push_back(2);
 p.push_back(2);
 p.push_back(1);
 p.push_back(-1);
 p.push_back(0);

 do {
  copy(p.begin(), p.end(), ostream_iterator<int>(cout, " "));
  cout << "/n";
 } while (prev_permutation(p.begin(), p.end()));
}

 

next_permutation的用法同pre_permutation.

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多