【C++】map/multimap容器

这篇具有很好参考价值的文章主要介绍了【C++】map/multimap容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.map基本概念

【C++】map/multimap容器,C++,c++

2.map构造和赋值

【C++】map/multimap容器,C++,c++

#include <iostream>
using namespace std;

//map容器 构造和赋值
#include<map>

//遍历输出map容器
void printMap(const map<int, int>& m)
{
	for (map<int, int>::const_iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << (*it).first << "value = " << it->second << endl;
	}
	cout << endl;
}

void test01()
{
	//创建map容器
	map<int, int>m;

	//按照key值自动排序
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(3, 30));
	m.insert(pair<int, int>(2, 20));
	m.insert(pair<int, int>(4, 40));
	printMap(m);

	//拷贝构造
	map<int, int>m2(m);
	printMap(m2);

	//赋值
	map<int, int>m3;
	m3 = m2;
	printMap(m3);
}

int main()
{
	test01();
	//cout << "-------------" << endl << endl;
	//test02();

	//**************************************
	system("pause");
	return 0;
} 

【C++】map/multimap容器,C++,c++

3.map大小和交换

【C++】map/multimap容器,C++,c++

#include <iostream>
using namespace std;

//map容器 大小和交换
#include<map>

void printMap(map<int, int>& m)
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << (*it).first << "    value = " << it->second << endl;
	}
	cout << endl;
}

//大小
void test01()
{
	map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(3, 30));
	m.insert(pair<int, int>(2, 20));

	if (m.empty())
	{
		cout << "m为空!" << endl;
	}
	else
	{
		cout << "size of m : " << m.size() << endl;
	}
}

//交换
void test02()
{
	map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(3, 30));
	m.insert(pair<int, int>(2, 20));

	map<int, int>m2;
	m2.insert(pair<int, int>(4, 100));
	m2.insert(pair<int, int>(6, 300));
	m2.insert(pair<int, int>(5, 200));

	cout << "交换前:" << endl;
	printMap(m);
	printMap(m2);

	//m与m2交换
	m.swap(m2);
	cout << "交换后:" << endl;
	printMap(m);
	printMap(m2);
}

int main()
{
	test01();
	cout << "-------------" << endl << endl;
	test02();

	//**************************************
	system("pause");
	return 0;
} 

【C++】map/multimap容器,C++,c++

4.map插入和删除

【C++】map/multimap容器,C++,c++
【C++】map/multimap容器,C++,c++

#include <iostream>
using namespace std;

//map容器 插入和删除
#include<map>

void printMap(map<int, int>& m)
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << (*it).first << "  value = " << it->second << endl;
	}
	cout << endl;
}

void test01()
{
	//创建map容器
	map<int, int>m;

	//插入
	//第一种
	m.insert(pair<int, int>(1, 10));

	//第二种
	m.insert(make_pair(2, 20));

	//第三种
	m.insert(map<int, int>::value_type(3, 30));

	//第四种
	m[4] = 40;

	//[]不建议插入, []其用途 可以利用可以访问到value
	//cout << m[5] <<endl; //输出了" key = 5   value = 0 "
	printMap(m);

	//删除
	m.erase(m.begin());
	printMap(m);

	m.erase(3); //按照key删除
	printMap(m);

	//清空
	m.erase(m.begin(), m.end());
	m.clear();
	printMap(m);
}

int main()
{
	test01();
	//cout << "-------------" << endl << endl;
	//test02();

	//**************************************
	system("pause");
	return 0;
} 

【C++】map/multimap容器,C++,c++

5.map查找和统计

【C++】map/multimap容器,C++,c++
【C++】map/multimap容器,C++,c++

#include <iostream>
using namespace std;

//map容器 查找和统计
#include<map>
void test01()
{
	//查找
	map<int, int>m;
	m.insert(make_pair(1, 10));
	m.insert(make_pair(3, 30));
	m.insert(make_pair(2, 20));
	m.insert(make_pair(2, 40)); // 不能插入重复元素(以key为标准)


	map<int, int>::iterator pos = m.find(3);

	if (pos != m.end())
	{
		cout << "找到了该元素  key = " << (*pos).first << " value = " << pos->second << endl;
	}
	else
	{
		cout << "no find this element" << endl;
	}

	//统计
	//map不允许插入重复元素, count统计而言 结果只能是0或1
	//multimap的count统计可能大于1
	int num = m.count(2);
	cout << "num = " << num << endl;
}

int main()
{
	test01();
	//cout << "-------------" << endl << endl;
	//test02();

	//**************************************
	system("pause");
	return 0;
} 

【C++】map/multimap容器,C++,c++

6.map容器排序

【C++】map/multimap容器,C++,c++
【C++】map/multimap容器,C++,c++

#include <iostream>
using namespace std;

//map容器 排序
#include<map>

class MyCompare
{
public:
	bool operator()(int v1, int v2) const
	{
		return v1 > v2; // 降序
	}
};

void test01()
{
	//默认从小到大排序
	//利用仿函数实现从小到大排序
	map<int, int, MyCompare> m;
	m.insert(make_pair(1, 10));
	m.insert(make_pair(3, 30));
	m.insert(make_pair(2, 20));

	for (map<int, int, MyCompare>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << "   value = " << it->second << endl;
	}
}

int main()
{
	test01();
	//cout << "-------------" << endl << endl;
	//test02();

	//**************************************
	system("pause");
	return 0;
} 

【C++】map/multimap容器,C++,c++文章来源地址https://www.toymoban.com/news/detail-688560.html

到了这里,关于【C++】map/multimap容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解 C++中STL的map/multimap

    ap容器中所有元素都是pair,pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)。 同时,所有元素都会根据元素的键值自动排序。 map/multimap属于关联式容器,底层数据结构是用二叉树实现的。它的优点就是可以根据key值快速找到value值。 这里需要了解map与

    2024年02月16日
    浏览(46)
  • 【C++入门到精通】C++入门 —— map & multimap (STL)

    各位小伙伴们,在这个美好的中秋节来临之际,我衷心祝福你和你的家人度过一个幸福、团圆的时刻。愿明月的皎洁照耀你的每一天,团圆的月饼传递着我对你的思念和祝福。祝福你在中秋佳节里收获幸福与快乐,家庭和睦,心想事成。中秋快乐! 前面我们讲了C语言的基础

    2024年02月08日
    浏览(37)
  • 【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}

    关联式容器和序列式容器是C++ STL中的两种不同类型的容器。 关联式容器是基于键值对的容器 ,其中每个元素都有一个唯一的键值,可以通过键值来访问元素。关联式容器包括set、multiset、map和multimap。 序列式容器是基于元素序列的容器 ,其中元素按照一定的顺序排列,可以

    2024年02月11日
    浏览(40)
  • 【C++】map、set、multimap、multiset的介绍和使用

    我讨厌世俗,也耐得住孤独。 1. 之前所学的vector,list,deque等容器都是序列式容器,因为他们的底层数据结构都是线性的,并且数据结构中存储的都是元素数据本身,也就是单一的变量。 而下面所学的set、map、multimap、multiset等容器都是关联式容器,他们内部存储的不再是单

    2023年04月15日
    浏览(38)
  • 【C++】STL——set/multiset 和 map/multimap的使用

    在初阶阶段,我们已经接触过STL中的部分容器 比如:vector、list、deque、forward_list(C++11)等,这些容器统称为 序列式容器 ,因为其底层为线性序列的数据结构,里面存储的是元素本身。 而今天我们要学习的几个容器称为关联式容器,那什么是关联式容器?它与序列式容器有什

    2024年02月14日
    浏览(41)
  • C++:stl中set(multiset)和map(multimap)的介绍和使用

    本文主要从概念、常用接口和使用方法方面介绍set(multiset)和map(multimap)。 目录 一、概念介绍 1.关联式容器 2.键值对 3. 树形结构的关联式容器 二、set和multiset 1.set的介绍 2.set使用 1. set模板参数列表 2. set构造 3. set迭代器 4. set容量 5. set修改操作 6.set使用举例 3.multiset介绍 4.mul

    2024年02月08日
    浏览(39)
  • 【C++】map/multimap/set/multiset的经典oj例题 [ 盘点&全面解析 ] (28)

    前言 大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏 YY的《初学者易

    2024年02月04日
    浏览(44)
  • 【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

    vector/list/deque… 这些容器统称为 序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为 关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是key, value结构的键值对 在数据检索时比序列式容器效率更高 “键

    2024年02月03日
    浏览(45)
  • ⚡【C++要笑着学】(31) 映射类:map 类 | pair 类型 (value_type) | map 的插入和遍历 | map 的 operator[] | multimap 类

        C++ 表情包趣味教程 👉 《C++要笑着学》 💭 写在前面: 本章我们继续讲解 STL,讲解 STL 的 map 类。我们将详细介绍 map 类的基础概念,包括 pair 类型(value_type)的应用和插入元素的方法。随后,我们将深入研究 Map 的遍历方式以及统计元素出现次数的几种方式。最后我

    2024年02月03日
    浏览(39)
  • map、multimap、set、multiset讲解

    2023年07月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包