STL unordered类容器浅谈
一个代码:
#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类容器浅谈的更多相关文章
- C++ STL中的常用容器浅谈
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...
- PHP自动加载类__autoload()浅谈
在面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类A和类B,在同一个文件里,实例化对象,就能在这个文件同时调用类A和类B的函数 <?php #a.php class A{ pub ...
- Java学习笔记(8)---Scanner类,浅谈继承
1.Scanner类: a.定义: java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanner(S ...
- php中普通类 接口类 抽象类 浅谈
一.普通类 1.关键词:class 类名,继承关键字extends 2.继承:只能实现单继承, 3.多态:子类继承可以实现多种功能 4.封装:类有权限机制,私有的只能自己用,受保护的可以被继承,子类 ...
- JAVA容器-浅谈HashMap的实现原理
概述 HashMap是通过数组+链表的方式实现的,由于HashMap的链表也是采用数组方式,我就修改直接利用LinkedList实现,简单模拟一下. 1.Key.Value的存取方式. 2.HashM ...
- 浅谈C++ STL string容器
浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...
- 浅谈C++ STL list 容器
浅谈C++ STL list 容器 本篇随笔简单讲解一下\(C++STL\)中\(list\)容器的使用方法和使用技巧. list容器的概念 学习过\(C++STL\)的很多同学都知道,\(STL\) ...
- 浅谈C++ STL vector 容器
浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...
- 浅谈C++ STL queue 容器
浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...
- 浅谈C++ STL stack 容器
浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种 ...
随机推荐
- PyQt5调用主窗口
import sysfrom ui.MainWindow import Ui_Form from PyQt5.QtWidgets import QApplication, QMainWindowcla ...
- java.sql.SQLException: ORA-28040: 没有匹配的验证协议
一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c时出现 java.sql.SQLException: ORA ...
- CTF中的神兵利刃-foremost工具之文件分离
原理 Foremost可以依据文件内的文件头和文件尾对一个文件进行分离,或者识别当前的文件是什么文件.比如拓展名被删除.被附加也仍然可以对其分离. 使用 安装: 需要使用这个工具,首先我们需要安装他, ...
- 关于预处理器 sass 的超全用法
随着用户需求的增加,应用于页面的 css 代码越来越复杂越发臃肿难以维护,但是又没有 css 的替代品,css 预处理器作为 css 的扩展,出现在前端技术中. sass 是 css 预处理器中常用的 ...
- python语法笔记
最近抽时间恶补了一下python语法,做个笔记. 比较运算符的结果为bool类型,示例:a=10,b=20 print("a>b吗?",a>b) 运行结果: ...
- 聊一下操作系统-macOS-与-Linux
聊一下操作系统 macOS 与 Linux 对于Windows操作系统大家都比较熟悉,也常拿它与Linux操作系统进行比较,两者之间的差异也很明显.但对于macOS 和 Linux的比较不太多,很多人 ...
- 《CTFshow-Web入门》03. Web 21~30
@ 目录 web21 题解 原理 web22 题解 原理 web23 题解 原理 web24 题解 原理 web25 题解 原理 web26 题解 web27 题解 web28 题解 web29 题解 ...
- brpc internal
brpc 内部实现 thread model pthread 1:1atomic cache同步降低性能 fiber n:1 -> nginx 多核难以扩展, 用户不能做阻塞操作. contex ...
- 保护个人数据安全,使用luks加密硬盘分区
create:2023-01-24 17:44:44 准备工作 新硬盘4T,无数据.在root用户或sudo状态下执行. 首先创建分区表,由于mbr最大支持只有2T,因此分区表创建为gpt格式. 然后 ...
- Solution -「YunoOI 2007」rfplca
Description Link. Given is a rooted tree with the \(\sf1\)-th node as the root. The tree will be giv ...