一个代码:

#include<cstdio>
#include<vector>
#include<functional>
#include<algorithm>
#include<set>
#include<unordered_set>
#include<map>
#include<unordered_map>
using namespace std;
char s[6][10] = { "Able","was","I","I","saw","elbA" };
int a[7] = { -2,3,1,4,4,7 };
int main()
{
set<int,greater<int> > GREATER_SET;//自动排序去重按从大到小排,必须加上functional头文件
set<int> SET;//自动排序从小到大
multiset<int> MULTI_SET;//自动排序不去重不加比较类(greater<int>)默认是从小到大排序
unordered_set<int> UNORDERED_SET;//不自动排序但去重
unordered_multiset<int> UNORDERED_MULTISET;//无序不去重集合
//map的相关系列进行类比即可
map<string,int> MAP;
multimap<string, int> MULTI_MAP;
unordered_map<string, int> UNORDERED_MAP;//通过哈希确定位置,不一定与原始序列相同,主要就是快
unordered_multimap<string, int> UNORDERED_MULTIMAP;
//*******************************************************************
//*******************************************************************
//先看set系列的输出
printf("original:\n");
for (int i = 0; i < 7; i++)
{
printf("%d ", a[i]);
GREATER_SET.insert(a[i]);
SET.insert(a[i]);
MULTI_SET.insert(a[i]);
UNORDERED_SET.insert(a[i]);
UNORDERED_MULTISET.insert(a[i]);
}
printf("\n");
printf("GREATER_SET:\n");
for (set<int, greater<int> >::iterator it = GREATER_SET.begin();
it != GREATER_SET.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
printf("SET:\n");
for (set<int>::iterator it = SET.begin();
it != SET.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
printf("MULTI_SET:\n");
for (multiset<int>::iterator it = MULTI_SET.begin();
it != MULTI_SET.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
printf("UNORDERED_SET:\n");
for (unordered_set<int>::iterator it = UNORDERED_SET.begin();
it != UNORDERED_SET.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
printf("UNORDERED_MULTISET:\n");
for (unordered_multiset<int>::iterator it = UNORDERED_MULTISET.begin();
it != UNORDERED_MULTISET.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
//再看map系列的输出
pair<string, int> psi;
printf("original:\n");
for (int i = 0; i < 6; i++)
{
printf("%s->%d ", s[i], i);
MAP[s[i]] = i;
psi.first = s[i];//char数组自动封装成string
psi.second = i;
MULTI_MAP.insert(psi);
UNORDERED_MAP[s[i]] = i;
UNORDERED_MULTIMAP.insert(psi);
}
printf("\n");
printf("MAP:\n");
for (map<string, int>::iterator it = MAP.begin();
it != MAP.end();it++)
{
printf("%s->%d ", it->first.c_str(), it->second);
}
printf("\n");
printf("MULTI_MAP:\n");
for (multimap<string, int>::iterator it = MULTI_MAP.begin();
it != MULTI_MAP.end(); it++)
{
printf("%s->%d ", it->first.c_str(), it->second);
}
printf("\n");
printf("UNORDERED_MAP:\n");
for (unordered_map<string, int>::iterator it = UNORDERED_MAP.begin();
it != UNORDERED_MAP.end(); it++)
{
printf("%s->%d ", it->first.c_str(), it->second);
}
printf("\n");
printf("UNORDERED_MULTIMAP:\n");
for (unordered_multimap<string, int>::iterator it = UNORDERED_MULTIMAP.begin();
it != UNORDERED_MULTIMAP.end(); it++)
{
printf("%s->%d ", it->first.c_str(), it->second);
}
printf("\n");
return 0;
}

STL unordered类容器浅谈的更多相关文章

  1. C++ STL中的常用容器浅谈

    STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...

  2. PHP自动加载类__autoload()浅谈

    在面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类A和类B,在同一个文件里,实例化对象,就能在这个文件同时调用类A和类B的函数 <?php #a.php class A{ pub ...

  3. Java学习笔记(8)---Scanner类,浅谈继承

    1.Scanner类: a.定义: java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanner(S ...

  4. php中普通类 接口类 抽象类 浅谈

    一.普通类 1.关键词:class  类名,继承关键字extends 2.继承:只能实现单继承, 3.多态:子类继承可以实现多种功能 4.封装:类有权限机制,私有的只能自己用,受保护的可以被继承,子类 ...

  5. JAVA容器-浅谈HashMap的实现原理

    概述 HashMap是通过数组+链表的方式实现的,由于HashMap的链表也是采用数组方式,我就修改直接利用LinkedList实现,简单模拟一下. 1.Key.Value的存取方式. 2.HashM ...

  6. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  7. 浅谈C++ STL list 容器

    浅谈C++ STL list 容器 本篇随笔简单讲解一下\(C++STL\)中\(list\)容器的使用方法和使用技巧. list容器的概念 学习过\(C++STL\)的很多同学都知道,\(STL\) ...

  8. 浅谈C++ STL vector 容器

    浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...

  9. 浅谈C++ STL queue 容器

    浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...

  10. 浅谈C++ STL stack 容器

    浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种 ...

随机推荐

  1. PyQt5调用主窗口

    import sysfrom ui.MainWindow import Ui_Form from PyQt5.QtWidgets import QApplication, QMainWindowcla ...

  2. java.sql.SQLException: ORA-28040: 没有匹配的验证协议

    一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c时出现 java.sql.SQLException: ORA ...

  3. CTF中的神兵利刃-foremost工具之文件分离

    原理 Foremost可以依据文件内的文件头和文件尾对一个文件进行分离,或者识别当前的文件是什么文件.比如拓展名被删除.被附加也仍然可以对其分离. 使用 安装: 需要使用这个工具,首先我们需要安装他, ...

  4. 关于预处理器 sass 的超全用法

    随着用户需求的增加,应用于页面的 css 代码越来越复杂越发臃肿难以维护,但是又没有 css 的替代品,css 预处理器作为 css 的扩展,出现在前端技术中. sass 是 css 预处理器中常用的 ...

  5. python语法笔记

    最近抽时间恶补了一下python语法,做个笔记. 比较运算符的结果为bool类型,示例:a=10,b=20   print("a>b吗?",a>b)     运行结果: ...

  6. 聊一下操作系统-macOS-与-Linux

    聊一下操作系统 macOS 与 Linux 对于Windows操作系统大家都比较熟悉,也常拿它与Linux操作系统进行比较,两者之间的差异也很明显.但对于macOS 和 Linux的比较不太多,很多人 ...

  7. 《CTFshow-Web入门》03. Web 21~30

    @ 目录 web21 题解 原理 web22 题解 原理 web23 题解 原理 web24 题解 原理 web25 题解 原理 web26 题解 web27 题解 web28 题解 web29 题解 ...

  8. brpc internal

    brpc 内部实现 thread model pthread 1:1atomic cache同步降低性能 fiber n:1 -> nginx 多核难以扩展, 用户不能做阻塞操作. contex ...

  9. 保护个人数据安全,使用luks加密硬盘分区

    create:2023-01-24 17:44:44 准备工作 新硬盘4T,无数据.在root用户或sudo状态下执行. 首先创建分区表,由于mbr最大支持只有2T,因此分区表创建为gpt格式. 然后 ...

  10. Solution -「YunoOI 2007」rfplca

    Description Link. Given is a rooted tree with the \(\sf1\)-th node as the root. The tree will be giv ...