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
分享到:
相关推荐
关于提供的部分内容,存在一些OCR识别错误,但整体可以理解为一个关于C++中set和multiset的学习指南。其中包含了如何下载CS101资料的链接和密码,以及访问编程教学网站的信息,这些信息对于想要进一步学习C++和STL的...
在C++标准库中,模板被广泛应用于STL(Standard Template Library,标准模板库),其中包括了各种容器如vector、map、multimap、set和multiset。这些容器都是模板类,它们提供了高效的数据组织和操作方式。 1. **...
### C++中的multiset容器详解 #### 引言 `multiset`是C++标准模板库(STL)中的一种关联容器,它主要用于存储数据,并能够从数据集合中取出数据。`multiset`的一个显著特点是它允许存储重复的键值,并且会自动根据...
`multiset`是STL中的一种关联容器,它类似于`set`,但允许插入重复元素。`multiset`内部使用红黑树(Red-Black Tree)作为底层数据结构,保证了插入、删除和查找操作的时间复杂度为O(log n)。与`set`不同的是,当...
### C++ `multiset` 介绍及详细使用示例 #### 概述 在C++标准模板库(STL)中,`std::multiset`是一个关联容器,它能够存储可重复的元素,并且这些元素按照指定的排序规则进行排序。`std::multiset`中的元素默认...
顺序容器包括 vector、deque、list 等,关联容器包括 set、multiset、map、multimap 等,容器适配器包括 stack、queue、priority_queue 等。 顺序容器是 STL 中的一种基本容器,用于存放各种类型的数据。顺序容器...
总结来说,C++的`<set>`头文件提供了`set`和`multiset`这两种关联容器,它们是通过高效的数据结构实现的,用于存储唯一的(`set`)或非唯一的(`multiset`)有序元素。了解并熟练使用这些容器,可以帮助开发者编写出...
- **Set/Multiset**: 二叉查找树实现的集合,存储唯一的或允许重复的元素。 - **Map/Multimap**: 二叉查找树实现的映射,存储键值对,键是唯一的或允许重复的。 - **Unordered Set/Multiset**: 哈希表实现的集合...
C++ STL入门教程(7) multimap、multiset的使用 本文主要介绍了C++ STL中multimap和multiset的使用方法,multimap是一对多索引,multiset是多元集合,都是STL容器中非常重要的组件。 一、multimap(一对多索引) ...
实验的目标是熟悉set、multiset、map和multimap这四种关联容器的使用,以及掌握插入迭代器和反向迭代器的操作,并应用四种基本的非变异算法。 首先,set和multiset是STL中的两种关联容器,它们分别存储唯一元素和...
**Multiset**与Set相似,唯一的区别是允许键值重复。插入元素时,系统同样会自动排序,但允许相同的元素出现多次。 **Map**是键值对的关联容器,每个键值对都由一个键(key)和对应的一个值(value)组成。键在容器...
8. **STL(Standard Template Library)**:深入理解STL容器(如vector、list、deque、stack、queue、priority_queue、set、multiset、map、multimap)和迭代器,以及算法和函数对象。 9. **文件操作**:学习如何...
2. **容器**:C++的STL(Standard Template Library)提供了多种容器,如vector、deque、list、forward_list、set、multiset、unordered_set、map、multimap、unordered_map等。这些容器提供了不同的数据结构和操作...
类似于STL的map、set、multimap和multiset模板,C++ B-tree也提供了btree_map、btree_set、btree_multimap和btree_multiset等模板。 B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构...
4. **无序容器**(C++11之后引入):包括`unordered_set`、`unordered_map`、`unordered_multiset`、`unordered_multimap`。 #### 三、序列容器 - **vector** - **特点**:动态数组实现,提供随机访问,支持快速...
开发者可能使用了关联数组或者map来建立课程与教师的对应关系,使用set或multiset来管理无序且不重复的课程信息。对于成绩管理,可能会用到C++的文件流(fstream)库,将数据持久化存储到磁盘,以便于数据的备份和...
而C++标准模板库(STL)则提供了一系列可复用的模板类和函数,支持数据结构和算法实现,如双端队列(deque)、优先队列(priority_queue)、列表(list)、映射(map)、多重映射(multimap)、多重集合(multiset)...