linux下练习 c++ 关联式容器共性测试,使用

简介: /* 关联式容器共性:二叉查找树实现,自动根据关键字排序,自动平衡 set,multiset,map,multimap 查找:.find(key) 失败返回.
/*
关联式容器共性:二叉查找树实现,自动根据关键字排序,自动平衡
		  set<K>,multiset<K>,map<K,V>,multimap<K,V>
查找:.find(key) 失败返回.end()
统计:.count(key)
删除:.erase(key)
插入:.insert(element)
区间:.lower_bund(key) //取得关键字为key的第一个元素位置
	 .upper_bound(key) //取得关键字为key的最后一个元素之后的位置
	 .equal_range(key) 取得关键字为key的区间,返回pair
构造函数可用比较函数作为参数  bool func(K a,K b)
*/
#include<iostream>
#include<set>
#include<string>
using namespace std;
#include "print.h"
struct person
{
	string name;
	int age;
public:
	person(const char* n,int a):name(n),age(a){}
};
bool operator<(const person& a,const person& b)
{
	return a.age<b.age||(a.age==b.age&& a.name<b.name);//找的时候按这个找
}
ostream& operator<<(ostream& o,const person& x)
{
	return o<<x.name<<':'<<x.age<<"  ";
}
int main()
{
	multiset<person> mp;
	mp.insert(person("ccc",16));
	mp.insert(person("aaa",13));
	mp.insert(person("aaa",13));
	mp.insert(person("kkk",18));
	mp.insert(person("fff",15));
	mp.insert(person("eee",11));
	mp.insert(person("jjj",16));
	print(mp.begin(),mp.end());
	multiset<person>::iterator it=mp.find(person("fff",15));
	if(it==mp.end()) cout<<"not find!\n";
	else
	{
	 cout<<"find:"<<*it
         <<" "<<mp.count(*it)<<"个\n";
	}
	person a("aaa",13);
	cout<<a<<" "<<mp.count(a)<<"个\n";
	cout<<"lower/upper bound方法:\n";
	multiset<person>::iterator ibegin,iend;
	ibegin=mp.lower_bound(a);
	iend=mp.upper_bound(a);
	print(ibegin,iend);
	cout<<"pair方法:\n";
	typedef multiset<person>::iterator myiter;//给长类型起个别名
	pair<myiter,myiter> p=mp.equal_range(a);
	print(p.first,p.second);
	cout<<"删除后输出:\n";
	mp.erase(person("kkk",18));//有多个就删除多个
	print(mp.begin(),mp.end());
	
}


 

结果:

 

相关文章
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
357 9
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
434 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
937 1
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
373 5
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
360 2
|
安全 Linux 虚拟化
10-26|我现在加了,在容器内也可以改时间了,但是我在容器内改了,为什么会影响到linux机子啊
10-26|我现在加了,在容器内也可以改时间了,但是我在容器内改了,为什么会影响到linux机子啊
|
存储 设计模式 C++
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
288 0
|
C++ 容器
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
241 5