一个代码:

#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. IIC、SPI、UART三者对比

    下面将对比三者的各自差异: 参考资料: 1.(112条消息) UART, SPI, IIC的详解及三者的区别和联系_iic spi uart_静思心远的博客-CSDN博客

  2. 2022-1-10 控件学习1 TextBlock、Lable、TextBox

    TextBlock LineBreak:在指定位置手动换行和<br/>类似 TextTrimming: CharacterEllipsis没有足够空间时显示...,WordEllpsis以 ...

  3. Linux下后台运行Java程序

    1.背景描述 用Java编写了一个程序(可执行的jar),需要在Linux中启动并持续运行 1.1.直接执行程序 直接执行程序后,在程序执行期间,无法在当前会话中再执行其他操作 1.2.直接执行程序后 ...

  4. ETL之apache hop数据增量同步功能

    ETL增量数据抽取CDC 概念:Change Data Capture,变化的数据捕获,也称:[增量数据抽取](名词解释) CDC是一种实现数据的增量抽取解决方案,是实现[ETL整体解决方案]中的一项 ...

  5. 为何每个开发者都在谈论Go?

    本文深入探讨了Go语言的多个关键方面,从其简洁的语法.强大的并发支持到出色的性能优势,进一步解析了Go在云原生领域的显著应用和广泛的跨平台支持.文章结构严谨,逐一分析了Go语言在现代软件开发中所占据的 ...

  6. Git命令详细使用指南

    Git命令详细使用指南 Git是一种广泛使用的版本控制系统,它可以帮助开发人员跟踪变更.协作项目和有效管理代码仓库.无论你是初学者还是有经验的用户,理解各种Git命令对于高效的代码管理至关重要. 安装 ...

  7. DP模拟题

    Smiling & Weeping ----寒灯纸上,梨花雨凉,我等风雪又一年 # [NOIP2007 普及组] 守望者的逃离 ## 题目背景 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深 ...

  8. 如何将GitLab仓库同步到GitHub和Gitee?

    作者:西瓜程序猿 主页传送门:https://www.cnblogs.com/kimiliucn 前言 在之前写的[Kimi.RocketMQ.NET]开源项目中,代码我是放在自己搭建的GitLab服 ...

  9. Go语言中JSON的反序列化规则

    Unmarshal 解析 func Unmarshal(data []byte, v any) error Unmarshal 解析 JSON 编码的数据,并将结果存储在 v 指向的值中.如果 v 为 ...

  10. MySQL——MySQL面试题

    文章目录 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数 ...