视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
c++集合set、multiset容器详解
2024-10-13 02:10:58 责编:小OO
文档

1. Set和multiset是C++标准库中的关联容器,它们存储的是键值对,其中键是唯一的,而值则可以相同也可以不同。
2. 在set中,所有的键值对必须具有相同的键。例如,给定两组键值对,第一组中键值对的键和值不同,而第二组中键值对的键和值相同。set仅能存储第二组键值对,无法存储第一组。
3. 由于set仅存储键,而非键值对,因此向set中插入数据时,只需提供键。比如,要存储第二组键值对,只需提供字符串{"a", "b", "c"},set会自动存储这些键。
4. Set容器默认根据键的自然顺序对元素进行排序。由于每个键值对的键是唯一的,因此排序实际上是对键值进行的。
5. Set容器的相关函数定义在``头文件中,属于std命名空间。使用set前,需包含该头文件,并使用std命名空间。
6. Set的类模板定义如下:
```cpp
template <class T, class Compare = less, class Allocator = allocator >
class set;
```
其中,T为键和值的类型,Compare为比较函数,用于元素排序,Allocator用于内存分配。
7. Set提供大小和判空函数,用于检查容器中元素的数量和是否为空。
8. 以下是一个简单的集合类实现,以及使用学生类Student进行的测试。该集合类派生自set,并实现了并、交、差三种操作:
```cpp
#include
#include
#include
#include
class Student {
std::string name;
int age;
public:
Student(const std::string& name, int age) : name(name), age(age) {}
bool operator<(const Student& other) const {
return name < other.name || (name == other.name && age < other.age);
}
};
class MySet : public std::set {
// 派生类中重载比较操作符,实现自定义排序
};
int main() {
MySet students;
// 添加雇员功能、显示功能等...
return 0;
}
```
9. 假设公司雇员的信息包括姓名和部门名称。可以创建一个管理雇员的集合类,该类应包括添加雇员和显示雇员信息的功能,并要求显示时先按部门名称升序,同名部门再按姓名升序排列。

下载本文
显示全文
专题