青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-163  評(píng)論-223  文章-30  trackbacks-0
   原題為某著名軟件公司的試題,大意如下:給定一個(gè)容器,要求刪除容器中重復(fù)的元素,并保持剩余元素的順序不變。在這里,本文為了全面通用考慮,作了擴(kuò)展,刪除vector中的重復(fù)元素,從容器中元素順序上可分為2種情形:1)保持剩余元素順序不變,特稱為穩(wěn)定刪除,對(duì)應(yīng)下面的stable_unique版本函數(shù)模板 2)不考慮順序變化,特稱為快速刪除。對(duì)應(yīng)下面的quick_unique版本函數(shù)模板。從重復(fù)的概念定義也可分為2種情況:1)基于簡(jiǎn)單的相等判斷 2)基于謂詞的等價(jià)判斷。因此,由排列組合得知應(yīng)該有4種版本的實(shí)現(xiàn),下面給出代碼描述
 1//函數(shù)對(duì)象模板類
 2template<typename T>
 3struct Predicate
 4{
 5    Predicate()
 6    {
 7    }
 8
 9    Predicate(const T& t)
10        :_t(t)
11    {
12    }
13    bool operator()(const T& t) const
14    {
15        //可以自定義比較實(shí)現(xiàn)
16        return _t == t;
17    }
18    //支持std::unique謂詞版本的刪除
19    bool operator()(const T& l,const T& r) const
20    {
21        //可以自定義比較實(shí)現(xiàn)
22        return l == r;
23    }

24    T _t;
25}
;
26
27//quick_unique版本1: 相等判斷
28template<typename T>
29void quick_unique(std::vector<T>& con)
30{
31    std::sort(con.begin(),con.end());
32    con.erase(std::unique(con.begin(),con.end()),con.end());
33}

34
35//quick_unique版本2: 謂詞判斷
36template<typename T,template <typename U> class Predicate>
37void quick_unique(std::vector<T>& con)
38{
39    std::sort(con.begin(),con.end());
40    con.erase(std::unique(con.begin(),con.end(),Predicate<T>()),con.end());
41}
42
43//stable_unique版本1: 相等判斷
44template<typename T>
45void stable_unique(std::vector<T>& con)
46{
47    std::vector<T>::iterator it,ret,beg = con.begin();
48    for (it = ++con.begin();it!=con.end();)
49    {
50        ret = find(beg,it,*it);
51        if (ret != it)
52            it = con.erase(it);
53        else
54            ++it;
55    }
56}
57
58//stable_unique版本2: 謂詞判斷
59template<typename T,template <typename U> class Predicate>
60void stable_unique(std::vector<T>& con)
61{
62    std::vector<T>::iterator it,ret,beg = con.begin();
63    for (it = ++con.begin();it!=con.end();)
64    {
65        ret = find_if(beg,it,Predicate<T>(*it));
66        if (ret != it)
67            it = con.erase(it);
68        else
69            ++it;
70    }
71}
   以上代碼在vc2005環(huán)境下編譯測(cè)試通過(guò),再進(jìn)一步擴(kuò)展,問(wèn)題完全可以歸類為刪除某容器內(nèi)重復(fù)元素,只要再加一個(gè)模板的模板參數(shù)即可template <typename T> class Conn;函數(shù)的形參類型變?yōu)閟td::Conn<T>就行了,但要注意的是不同平臺(tái)下對(duì)應(yīng)容器的erase實(shí)現(xiàn)所返回的迭代器可能有所差別,比如map要這樣寫(xiě)才能在linux上正確工作:conn.erase(it++)。對(duì)于特殊的情況,可對(duì)以上4個(gè)函數(shù)作對(duì)應(yīng)的重載(注意,函數(shù)模板沒(méi)有特化的概念)來(lái)解決。
posted on 2011-06-25 14:49 春秋十二月 閱讀(6577) 評(píng)論(3)  編輯 收藏 引用 所屬分類: Opensrc

評(píng)論:
# re: 刪除vector容器內(nèi)的重復(fù)元素[未登錄](méi) 2011-06-29 16:15 | tom
- construct a set S
- for each element in vector
insert it into S
if fails, remove element  回復(fù)  更多評(píng)論
  
# re: 刪除vector容器內(nèi)的重復(fù)元素 2011-06-30 11:37 | w2j3
@tom

并保持剩余元素的順序不變
  回復(fù)  更多評(píng)論
  
# re: 刪除vector容器內(nèi)的重復(fù)元素 2011-06-30 11:43 | w2j3
@tom

sorry you were right in saying that

please ignore my last comment, thanks.  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久成人精品视频| 葵司免费一区二区三区四区五区| 国产精品免费一区豆花| 久久免费高清视频| 欧美亚洲视频在线观看| 欧美午夜精品理论片a级大开眼界| 欧美一区二区三区另类| 国产欧美日韩精品a在线观看| 久热这里只精品99re8久| 欧美亚洲系列| 99pao成人国产永久免费视频| 欧美一区二区三区男人的天堂 | 欧美高清自拍一区| 国产精品久久福利| 久久一区二区三区av| 亚洲网站视频| 亚洲精品系列| 国产精品久久7| 亚洲女同同性videoxma| 国产精品最新自拍| 国产精品狠色婷| 国产精品综合av一区二区国产馆| 亚洲国产激情| 欧美制服丝袜第一页| 欧美一区二区三区视频免费播放| 日韩视频免费| 在线综合欧美| 香蕉视频成人在线观看| 久久久久综合| 亚洲欧美一区二区三区在线| 国产欧美精品日韩区二区麻豆天美| 国产精品免费福利| 亚洲另类自拍| 亚洲一区二区三区四区视频| 免费看亚洲片| 国产精品久久一级| 欧美色欧美亚洲另类二区| 国产精品成人播放| 亚洲永久在线观看| 国产香蕉久久精品综合网| 亚洲福利视频专区| 欧美激情一区二区三级高清视频 | 国产精品久久久久aaaa九色| 亚洲大胆视频| 国语自产精品视频在线看| 免费观看久久久4p| 国产真实乱偷精品视频免| 亚洲一区网站| 一本色道久久综合亚洲精品按摩| 亚洲一区自拍| 久久精品在线| 久久综合狠狠综合久久综合88| 国产精品高潮呻吟久久av无限| 亚洲伦伦在线| 免费在线日韩av| 一本大道久久精品懂色aⅴ | 一区在线免费观看| 欧美xart系列在线观看| 久久视频在线免费观看| 亚洲二区精品| 亚洲视频www| 亚洲激情第一区| 欧美大片va欧美在线播放| 亚洲国产精品欧美一二99| 久久亚洲欧洲| 亚洲欧美日韩视频一区| 国产欧美一级| 性做久久久久久久免费看| 久久成人18免费网站| 日韩写真在线| 欧美国产亚洲另类动漫| 国产精品99久久久久久有的能看| 亚洲图片欧美午夜| 亚洲第一主播视频| 国产精品一区二区三区久久久| 久热re这里精品视频在线6| 欧美日韩在线大尺度| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲激情成人网| 老牛嫩草一区二区三区日本| 国产欧美日韩一级| 欧美一区二区三区另类| 欧美永久精品| 久久婷婷久久| 欧美激情中文字幕一区二区| 国产精品久久久久77777| 亚洲一区日韩| 久久―日本道色综合久久| 国外成人性视频| 国产精品嫩草99a| 国产日韩欧美一区二区三区在线观看| 亚洲二区视频在线| 性感少妇一区| 嫩草影视亚洲| 一区二区三区四区五区精品| 国产在线拍偷自揄拍精品| 激情婷婷亚洲| 久久伊人精品天天| 免费在线亚洲欧美| 亚洲一区二区三区激情| 国产精品久久久91| 久久九九有精品国产23| 欧美久久婷婷综合色| 久久成人综合网| 亚洲精品久久7777| 久久免费观看视频| 久久久7777| 亚洲欧美日韩天堂| 模特精品在线| 在线播放中文一区| 日韩天堂在线视频| 欧美成人免费网| 日韩视频一区二区在线观看| 亚洲区一区二区三区| 欧美一区二区三区啪啪| 亚洲国产导航| 亚洲色图制服丝袜| 欧美高清hd18日本| 亚洲深夜影院| 久久中文欧美| 亚洲乱码一区二区| 亚洲欧美激情四射在线日| 国产精品久久久久久久久久免费 | 日韩天堂在线视频| 欧美激情一区二区三区全黄| 欧美激情一区二区三区四区| 久久久久这里只有精品| 99re6热只有精品免费观看| 99精品国产高清一区二区| 亚洲欧洲精品一区| 欧美二区在线| 中国女人久久久| 国产一区二区三区视频在线观看| 亚洲欧美高清| 欧美电影在线观看完整版| 欧美丝袜第一区| 亚洲一区二区三区四区在线观看| 亚洲二区在线观看| 欧美专区日韩专区| 一区二区三区色| 久久久久9999亚洲精品| 欧美电影在线| 久久精品一区二区三区不卡| 国产精品亚洲美女av网站| 亚洲专区一区| 亚洲欧美激情视频在线观看一区二区三区| 日韩网站在线观看| 欧美电影专区| 欧美日韩亚洲一区二区三区四区| 最新成人av网站| 9l视频自拍蝌蚪9l视频成人| 欧美午夜精品久久久久免费视| 亚洲欧美中文在线视频| 欧美诱惑福利视频| 蜜臀久久99精品久久久画质超高清| 亚洲电影av| 性做久久久久久久免费看| 一本大道av伊人久久综合| 亚洲自拍偷拍网址| 亚洲精品日本| 欧美成人激情视频免费观看| 久久亚洲免费| 影音先锋中文字幕一区二区| 亚洲精品一区二区在线| 国产精品午夜国产小视频| 亚洲第一视频| 欧美日韩亚洲网| 一区二区成人精品| 欧美成人免费播放| 美女黄毛**国产精品啪啪 | 欧美成人午夜激情在线| 国产精品二区二区三区| 在线亚洲电影| 狠色狠色综合久久| 久久大逼视频| 欧美国产日本在线| 亚洲二区精品| 欧美日韩黄色一区二区| 狼人社综合社区| 亚洲激情视频网| 一区二区三区久久| 亚洲免费在线观看| 国产精品一区在线观看| 欧美在线视频免费观看| 午夜一级久久| 国产精品视频999| 亚洲欧美日韩成人高清在线一区| 亚洲激情第一区| 亚洲午夜小视频| 香蕉久久久久久久av网站| 国产精品久久久999| 性感少妇一区| 亚洲裸体俱乐部裸体舞表演av| 91久久精品日日躁夜夜躁欧美 | 久久久久久一区二区三区| 国产丝袜一区二区| 狼人天天伊人久久| 香蕉久久夜色精品| 欧美高清成人| 午夜精品一区二区三区四区 |