论坛首页 编程语言技术论坛

C++自定义容器排序规则

浏览 1297 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-12-02  


<pre name="code" class="c++">

/*************************************************************************
    &gt; File Name: MyComparator.cpp
    &gt; Author: ma6174
    &gt; Mail: ma6174@163.com
    &gt; Created Time: 2013年12月 2日 23:22:07
************************************************************************/
#include&lt;iostream&gt;
#include&lt;set&gt;
#include&lt;iterator&gt;
using namespace std;

template &lt;class T&gt;
class MyComparator {

  public :

  enum compare_mode {normal,reverse};

  private:
  compare_mode mode;
  public:
MyComparator(compare_mode m=normal):mode(m) {


}

bool operator()(const T &amp;t1,const T &amp;t2) {
  return mode==normal ? t1&lt;t2 : t2&lt;t1;

}

};

int main() {

   set&lt;int&gt; s1;

   for(int i=0;i&lt;10;i++) {

   s1.insert(i);
   }

   copy(s1.begin(),s1.end(),ostream_iterator&lt;int&gt;(cout," "));
   cout&lt;&lt;endl;

   MyComparator&lt;int&gt; com(MyComparator&lt;int&gt;::reverse);
   set&lt;int,MyComparator&lt;int&gt; &gt; s2(com);
  
   for(int i=0;i&lt;10;i++) {

   s2.insert(i);
   }
    cout&lt;&lt;"==========="&lt;&lt;endl;
   copy(s2.begin(),s2.end(),ostream_iterator&lt;int&gt;(cout," "));
   cout&lt;&lt;endl;


}
</pre>
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics