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

C++ Set vs Multiset

浏览 1323 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-12-02  
C++
Set
<pre name="code" class="c++">/*************************************************************************
    &gt; File Name: testSet.cpp
    &gt; Author: ma6174
    &gt; Mail: ma6174@163.com
    &gt; Created Time: 2013年12月 2日 21:17:59
************************************************************************/
#include&lt;iostream&gt;
#include&lt;iterator&gt;
#include&lt;set&gt;

using namespace std;

int main() {

/* set&lt;int&gt; s;

pair&lt;set&lt;int&gt;::iterator,bool&gt; result = s.insert(3);
if(result.second) {
cout&lt;&lt;"insert success!"&lt;&lt;endl;


}
else {

cout&lt;&lt;"insert error"&lt;&lt;endl;


}
*/

typedef set&lt;int,greater&lt;int&gt; &gt; IntSet;
IntSet s1;
s1.insert(4);
s1.insert(3);
s1.insert(5);
s1.insert(1);
s1.insert(6);
s1.insert(2);
s1.insert(5);
IntSet::iterator pos ;
for(pos = s1.begin();pos != s1.end();pos++) {

    cout&lt;&lt;*pos &lt;&lt;' ';


}
cout&lt;&lt;endl;

pair&lt;IntSet::iterator,bool&gt; result = s1.insert(4);

if(result.second) {

cout&lt;&lt;"success insert "&lt;&lt;*(result.first)&lt;&lt;endl;
cout&lt;&lt;distance(s1.begin(),result.first)&lt;&lt;endl;
} else {

cout&lt;&lt;" exists"&lt;&lt;endl;
}

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

s2.erase(s2.begin(),s2.find(3));
int num ;
num = s2.erase(5);
cout&lt;&lt;num&lt;&lt;" elements removed"&lt;&lt;endl;

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

}</pre>
输出:
6 5 4 3 2 1
exists
1 2 3 4 5 6
1 elements removed
3 4 6


Multiset
<pre name="code" class="c++">
/*************************************************************************
    &gt; File Name: testSet.cpp
    &gt; Author: ma6174
    &gt; Mail: ma6174@163.com
    &gt; Created Time: 2013年12月 2日 21:17:59
************************************************************************/
#include&lt;iostream&gt;
#include&lt;iterator&gt;
#include&lt;set&gt;

using namespace std;

int main() {

/* set&lt;int&gt; s;

pair&lt;set&lt;int&gt;::iterator,bool&gt; result = s.insert(3);
if(result.second) {
cout&lt;&lt;"insert success!"&lt;&lt;endl;


}
else {

cout&lt;&lt;"insert error"&lt;&lt;endl;


}
*/

typedef set&lt;int,greater&lt;int&gt; &gt; IntSet;
IntSet s1;
s1.insert(4);
s1.insert(3);
s1.insert(5);
s1.insert(1);
s1.insert(6);
s1.insert(2);
s1.insert(5);
IntSet::iterator pos ;
for(pos = s1.begin();pos != s1.end();pos++) {

    cout&lt;&lt;*pos &lt;&lt;' ';


}
cout&lt;&lt;endl;

pair&lt;IntSet::iterator,bool&gt; result = s1.insert(4);

if(result.second) {

cout&lt;&lt;"success insert "&lt;&lt;*(result.first)&lt;&lt;endl;
cout&lt;&lt;distance(s1.begin(),result.first)&lt;&lt;endl;
} else {

cout&lt;&lt;" exists"&lt;&lt;endl;
}

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

s2.erase(s2.begin(),s2.find(3));
int num ;
num = s2.erase(5);
cout&lt;&lt;num&lt;&lt;" elements removed"&lt;&lt;endl;

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

}</pre>
输出:
6 5 5 4 3 2 1
1 2 3 4 4 5 5 6
2 elements removed
3 4 4 6
论坛首页 编程语言技术版

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