`

C++ Set vs Multiset

c++ 
阅读更多
Set
/*************************************************************************
    > File Name: testSet.cpp
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: 2013年12月 2日 21:17:59
 ************************************************************************/
#include<iostream>
#include<iterator>
#include<set>

using namespace std;

int main() {

/*	set<int> s;

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


	}
	else {
		
		cout<<"insert error"<<endl;


	}
*/

typedef set<int,greater<int> > 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<<*pos <<' ';


}
cout<<endl;

pair<IntSet::iterator,bool> result = s1.insert(4);

if(result.second) {

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

	cout<<" exists"<<endl;
}

set<int> s2(s1.begin(),s1.end());
copy(s2.begin(),s2.end(),ostream_iterator<int>(cout," "));
cout<<endl;

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

copy(s2.begin(),s2.end(),ostream_iterator<int>(cout," "));
cout<<endl;

}

输出:
6 5 4 3 2 1
exists
1 2 3 4 5 6
1 elements removed
3 4 6


Multiset
/*************************************************************************
    > File Name: testSet.cpp
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: 2013年12月 2日 21:17:59
 ************************************************************************/
#include<iostream>
#include<iterator>
#include<set>

using namespace std;

int main() {

/*	set<int> s;

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


	}
	else {
		
		cout<<"insert error"<<endl;


	}
*/

typedef set<int,greater<int> > 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<<*pos <<' ';


}
cout<<endl;

pair<IntSet::iterator,bool> result = s1.insert(4);

if(result.second) {

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

	cout<<" exists"<<endl;
}

set<int> s2(s1.begin(),s1.end());
copy(s2.begin(),s2.end(),ostream_iterator<int>(cout," "));
cout<<endl;

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

copy(s2.begin(),s2.end(),ostream_iterator<int>(cout," "));
cout<<endl;

}

输出:
6 5 5 4 3 2 1
1 2 3 4 4 5 5 6
2 elements removed
3 4 4 6
分享到:
评论

相关推荐

    C++set函数学习

    关于提供的部分内容,存在一些OCR识别错误,但整体可以理解为一个关于C++中set和multiset的学习指南。其中包含了如何下载CS101资料的链接和密码,以及访问编程教学网站的信息,这些信息对于想要进一步学习C++和STL的...

    C++模板(vector、map、multimap、set、multiset)

    在C++标准库中,模板被广泛应用于STL(Standard Template Library,标准模板库),其中包括了各种容器如vector、map、multimap、set和multiset。这些容器都是模板类,它们提供了高效的数据组织和操作方式。 1. **...

    C++-中的multiset容器

    ### C++中的multiset容器详解 #### 引言 `multiset`是C++标准模板库(STL)中的一种关联容器,它主要用于存储数据,并能够从数据集合中取出数据。`multiset`的一个显著特点是它允许存储重复的键值,并且会自动根据...

    STL容器multiset的使用

    `multiset`是STL中的一种关联容器,它类似于`set`,但允许插入重复元素。`multiset`内部使用红黑树(Red-Black Tree)作为底层数据结构,保证了插入、删除和查找操作的时间复杂度为O(log n)。与`set`不同的是,当...

    C++multiset介绍及详细使用示例(源代码)

    ### C++ `multiset` 介绍及详细使用示例 #### 概述 在C++标准模板库(STL)中,`std::multiset`是一个关联容器,它能够存储可重复的元素,并且这些元素按照指定的排序规则进行排序。`std::multiset`中的元素默认...

    C++STL详解PPT

    顺序容器包括 vector、deque、list 等,关联容器包括 set、multiset、map、multimap 等,容器适配器包括 stack、queue、priority_queue 等。 顺序容器是 STL 中的一种基本容器,用于存放各种类型的数据。顺序容器...

    C++ 头文件系列(set)详解

    总结来说,C++的`&lt;set&gt;`头文件提供了`set`和`multiset`这两种关联容器,它们是通过高效的数据结构实现的,用于存储唯一的(`set`)或非唯一的(`multiset`)有序元素。了解并熟练使用这些容器,可以帮助开发者编写出...

    c++标准库STL手册

    - **Set/Multiset**: 二叉查找树实现的集合,存储唯一的或允许重复的元素。 - **Map/Multimap**: 二叉查找树实现的映射,存储键值对,键是唯一的或允许重复的。 - **Unordered Set/Multiset**: 哈希表实现的集合...

    C++ STL入门教程(7) multimap、multiset的使用

    C++ STL入门教程(7) multimap、multiset的使用 本文主要介绍了C++ STL中multimap和multiset的使用方法,multimap是一对多索引,multiset是多元集合,都是STL容器中非常重要的组件。 一、multimap(一对多索引) ...

    C++STL实验报告-迭代器和非变异算法

    实验的目标是熟悉set、multiset、map和multimap这四种关联容器的使用,以及掌握插入迭代器和反向迭代器的操作,并应用四种基本的非变异算法。 首先,set和multiset是STL中的两种关联容器,它们分别存储唯一元素和...

    C++map,set内部数据结构.docx

    **Multiset**与Set相似,唯一的区别是允许键值重复。插入元素时,系统同样会自动排序,但允许相同的元素出现多次。 **Map**是键值对的关联容器,每个键值对都由一个键(key)和对应的一个值(value)组成。键在容器...

    c++实例教程,对大家初学c++非常有帮助

    8. **STL(Standard Template Library)**:深入理解STL容器(如vector、list、deque、stack、queue、priority_queue、set、multiset、map、multimap)和迭代器,以及算法和函数对象。 9. **文件操作**:学习如何...

    c++文档MSDN详尽版

    2. **容器**:C++的STL(Standard Template Library)提供了多种容器,如vector、deque、list、forward_list、set、multiset、unordered_set、map、multimap、unordered_map等。这些容器提供了不同的数据结构和操作...

    谷歌 B-Tree C++ 模板库.

    类似于STL的map、set、multimap和multiset模板,C++ B-tree也提供了btree_map、btree_set、btree_multimap和btree_multiset等模板。 B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构...

    C++ 标准库

    4. **无序容器**(C++11之后引入):包括`unordered_set`、`unordered_map`、`unordered_multiset`、`unordered_multimap`。 #### 三、序列容器 - **vector** - **特点**:动态数组实现,提供随机访问,支持快速...

    校园信息管理系统(是用C++写的一个小的系统)

    开发者可能使用了关联数组或者map来建立课程与教师的对应关系,使用set或multiset来管理无序且不重复的课程信息。对于成绩管理,可能会用到C++的文件流(fstream)库,将数据持久化存储到磁盘,以便于数据的备份和...

    C/C++ 标准库函数 (中文版)

    而C++标准模板库(STL)则提供了一系列可复用的模板类和函数,支持数据结构和算法实现,如双端队列(deque)、优先队列(priority_queue)、列表(list)、映射(map)、多重映射(multimap)、多重集合(multiset)...

Global site tag (gtag.js) - Google Analytics