首页 > 编程语言 >C++ 关联容器使用 map, unordered_map, set, unordered_set, multiset, unordered_multiset

C++ 关联容器使用 map, unordered_map, set, unordered_set, multiset, unordered_multiset

时间:2024-06-23 21:30:00浏览次数:3  
标签:std map set cout myMuliSet include unordered

关联容器是否有序是否关联值是否可重复访问时间
set对数
map对数
multiset对数
multimap对数
unordered_map常数
unordered_set常数
unordered_multiset常数
unordered_multimap常数

#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iostream>
#include <array>

using namespace std;

template <typename AssozCont>
bool containsElement5(const AssozCont& assozCont) {
	return assozCont.contains(5);
}

int main() {

	// std::map
	std::map<std::string, int> m{ {"Dijkstra", 1972}, {"Scott", 1976} };
	m["Ritchie"] = 1983;
	std::cout << m["Ritchie"]; // 1983
	for (auto p : m) std::cout << "{" << p.first << "," << p.second << "}";
	// {Dijkstra,1972},{Ritchie,1983},{Scott,1976}
	m.erase("Scott");
	for (auto p : m) std::cout << "{" << p.first << "," << p.second << "}";
	// {Dijkstra,1972},{Ritchie,1983}
	m.clear();
	std::cout << m.size() << std::endl; // 0



	// std::unordered_map
	std::unordered_map<std::string, int> um{ {"Dijkstra", 1972}, {"Scott", 1976} };
	um["Ritchie"] = 1983;
	std::cout << um["Ritchie"]; // 1983
	for (auto p : um) std::cout << "{" << p.first << "," << p.second << "}";
	// {Ritchie,1983},{Scott,1976},{Dijkstra,1972}
	um.erase("Scott");
	for (auto p : um) std::cout << "{" << p.first << "," << p.second << "}";
	// {Ritchie,1983},{Dijkstra,1972}
	um.clear();
	std::cout << um.size() << std::endl; // 0

	// std::set
	std::set<int> mySet{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	std::cout << "containsElement5(mySet): "
		<< containsElement5(mySet); // true


	//std::unordered_set
	std::unordered_set<int> myUnordSet{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	std::cout << "containsElement5(myUnordSet): "
		<< containsElement5(myUnordSet); // true


	// std::multiset
	std::multiset<int> myMuliSet{ 3, 1, 5, 3, 4, 5, 1, 4, 4, 3, 2, 2, 7, 6, 4, 3, 6 };
	for (auto s : myMuliSet) std::cout << s << " ";
	// 1 1 2 2 3 3 3 3 4 4 4 4 5 5 6 6 7
	myMuliSet.insert(8);
	std::array<int, 5> myArr{ 10, 11, 12, 13, 14 };
	myMuliSet.insert(myArr.begin(), myArr.begin() + 3);
	myMuliSet.insert({ 22, 21, 20 });
	for (auto s : myMuliSet) std::cout << s << " ";
	// 1 1 2 2 3 3 3 3 4 4 4 4 5 5 6 6 7 10 11 12 20 21 22
	std::cout << myMuliSet.erase(4); // 4
	myMuliSet.erase(myMuliSet.lower_bound(5), myMuliSet.upper_bound(15));
	for (auto s : myMuliSet) std::cout << s << " ";
	// 1 1 2 2 3 3 3 3 20 21 22

	// std::multimap
	std::multimap<char, int> multiMap = { {'a', 10}, {'a', 20}, {'b', 30} };
	for (auto p : multiMap) std::cout << "{" << p.first << "," << p.second << "} ";
	// {a,10} {a,20} {b,30}

	return 0;

}

标签:std,map,set,cout,myMuliSet,include,unordered
From: https://blog.csdn.net/zg260/article/details/139906026

相关文章

  • [Java并发]ConcurrentHashMap
    ConcurrentHashMapHashMap和ConcurrentHashMap的区别主要区别就是hashmap线程不安全,ConcurrentHashMap线程安全HashMap线程不安全,有以下两个问题put覆盖问题比如有两个线程A和B,首先A希望插入一个key-value对到HashMap中,首先计算记录所要落到的桶的索引坐标,然后获取到该桶......
  • 【Unity服务器01】之AssetBundle上传加载u3d模型
    首先打开一个项目导入一个简单的场景导入怪物资源,AssetBundle知识点:1.指定资源的AssetBundle属性标签  (1)找到AssetBundle属性标签(2)A标签代表:资源目录(决定打包之后在哪个文件夹里面)     B标签代表:后缀  (3)设置AB标签      AssetBundle的......
  • [Golang并发]Sync.map
    sync.Map的实现原理可概括为:通过read和dirty两个字段将读写分离,读取时会先查询read,不存在再查询dirty,写入时则只写入dirty,所以read相当于dirty的缓存。读取read并不需要加锁,而读或写dirty都需要加锁。misses字段统计read被穿透的次数,被穿透指需要读dirty的情......
  • image-classification-dataset
    importtorchtextfromtorchvisionimporttransformsfromtorch.utilsimportdatafromd2limporttorchasd2limporttorchvisiontrans=transforms.ToTensor()fashion_mnist_train=torchvision.datasets.FashionMNIST("../data",......
  • MybatisPlus逆向工程插件,无需编写任何配置文件,只需配置数据库信息,一键生成Entity、Con
    文章目录1.前言2.与其它逆向工程工具相比的优势3.下载插件4.准备工作4.1创建数据库和表(可跳过)4.2配置数据库信息4.2.1打开IDEA的菜单栏4.2.2找到工具,点击ConfigDatabase4.2.3填写连接数据库所需要的信息4.3导入MybatisPlus的Maven依赖和SpringWeb的Maven依......
  • Linux开发讲课9--- Linux的IPC机制-内存映射(Memory Mapping)
            Linux的IPC(Inter-ProcessCommunication,进程间通信)机制是多个进程之间相互沟通的方法,它允许不同进程之间传播或交换信息。Linux支持多种IPC方式,包括但不限于:管道(Pipe):包括无名管道和命名管道(FIFO)。无名管道是半双工的,通常用于具有亲缘关系的进程间通信,如父子......
  • Map集合之HashMap细说
            最近在看面试题,看到了hashmap相关的知识,面试中问的也挺多的,然后我这里记录下来,供大家学习。Hashmap为什么线程不安全jdk1.7中,在扩容的时候因为使用头插法导致链表需要倒转,从而可能出现循环链表问题或者数据丢失的问题jdk1.8中,在put方法中,假设A,B两个线......
  • Java 面试题:如何保证集合是线程安全的? ConcurrentHashMap 如何实现高效地线程安全?
    在多线程编程中,保证集合的线程安全是一个常见而又重要的问题。线程安全意味着多个线程可以同时访问集合而不会导致数据不一致或程序崩溃。在Java中,确保集合线程安全的方法有多种,包括使用同步包装类、锁机制以及并发集合类。最简单的方法是使用Collections.synchronized......
  • MapReduce和YARN
    一:MapReduce概述MapReduce是hadoop三大组件之一,是分布式计算组件Map阶段:将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果Reduce阶段:将Maptask执行的结果进行汇总,按照Reducetask的计算规则获得一个唯一的结果我们在MapReduce计算框架的使用过程......
  • 全网最好看的单细胞umap图绘制教程
    作者按大家或许都曾被Nature,Science上的单细胞umap图吸引过,不免心生崇拜。在这里,我们将介绍一种简单方便的顶刊级umap图可视化全文字数|预计阅读时间:2000|5min——Starlitnightly(星夜)环境加载我们先导入一些必须的依赖包importomicverseasovimportscanpyassci......