当前位置: 首页 > news >正文

day17 周末两天偷懒没更新,今天炼丹加学习,完结STL常用容器部分

还剩下两个常用容器,一个是set(集合容器)  , 一个是map容器

set/multiset 容器

set容器是关联式容器,该容器的特点是:所有元素都会在插入时被自动排序

set/multiset 都是关联式容器 ,其底层结构是使用二叉树实现的。

二者的区别是:set不允许容器中有重复的元素 , multiset允许容器中有重复的元素。

构造  :默认构造和拷贝构造 重载operator=

插入数据的时候没有push  只有insert。

现在来写写特殊的情况,一般的set中默认的是升序排列,下列这段代码第一次打印的时候显示的是 2,5,10,18,如果我想让其降序排列呢,那么还是按照之前的思路,构造一个仿函数即可。仿函数的本质其实是一个类。

class compare
{
public:
    bool operator()(int v1 , int v2)const // 需要加入const . 关键字表示 该操作符不会修改类的成员变量,确保 operator() 方法在对象内部是只读的。
    {
        return v1 > v2;
    }
};

void printinfo(set<int,compare> &s)
{
    for(set<int,compare>::iterator it = s.begin() ; it != s.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

void test01()
{
    set<int>s1;
    s1.insert(10);
    s1.insert(5);
    s1.insert(18);
    s1.insert(2);
    printinfo(s1);
    set<int , compare>s2 ; 
    s2.insert(10);
	s2.insert(5);
	s2.insert(18);
	s2.insert(2);
}

int main()
{
    test01();
    system("pause");
    return 0 ;
}

还学习了如何创建队组

队组: 成对出现的数据 , 利用队组可以放回两个数据

创建方式   pair<type , type> p (value1 , value2);

pair<type , type> p = make_pair(value1 , value2);

总结:对于自定义数据类型 set必须指定排序规则才可以插入数据

map/multimap容器

map中所有元素都是pair   pair中第一个元素是key(键值),起到索引作用 第二个元素是value(实值)。

所有元素会根据元素的键值自动排序 从小到大 。

map/multimap关联式容器,二叉树实现。

优点:可以快速根据key找到value。

map中不允许有重复key值的元素   multimap可以有。

使用率仅次与vector list。

构造赋值同set   插入数据的时候一定要使用队组。

使用:size empty swap  find  count 

void printinfo(map<int, int> &m)
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) 
	{
		cout << it->first << " " ;
		cout << (*it).second << " "<<endl;
	}
	cout << endl;
}
void test01() 
{
	map<int, int>m1;
	//第一种
	m1.insert(make_pair(2, 2));
	//第二种
	m1.insert(pair<int , int>(1,10));
	m1.insert(pair<int, int>(45, 4));
	m1.insert(pair<int, int>(5, 6));
	m1.insert(pair<int, int>(9, 3));
	//第三种  不推荐
	m1.insert(map<int, int>::value_type(3, 30));
	//第四种  不推荐  如果要输出 cout<<m1[5]<< endl ; 他会先创建一个key为5 value为0的元素
	//[]不建议插数  用途使用key访问到value
	m1[6] = 32;
	printinfo(m1);
}

相关文章:

  • 揭秘大数据 | 13、大数据的五大问题 之 数据科学
  • FPGA的直方图均衡
  • 【单元测试】
  • 【Docker系列七】Docker Compose 命令详解
  • 【AI大模型】搭建本地大模型GPT-J:详细步骤及常见问题
  • 代码随想录第六十二天| Floyd 算法精讲 A * 算法精讲 (A star算法) 最短路算法总结篇
  • SpringBoot @Scheduled Cron 表达式 详解
  • 04STM32外部中断
  • 2025-03-25 学习记录--C/C++-PTA 习题11-7 奇数值结点链表
  • LVS的 NAT 模式实验
  • Python 非异步函数执行异步函数的方案
  • Windows系统下Pycharm+Minianaconda3连接教程【成功】
  • 第三百八十七节 JavaFX教程 - JavaFX CSS
  • 数据结构--分块查找
  • AI时代SEO的范式重构:从关键词优化到认知引擎驱动的深度思考
  • Gunicorn+Eventlet无法收到SocketIO发送的消息
  • 【软件测试】:软件测试实战
  • 计算机网络 第一章:计算机网络和因特网(2)
  • Qt——使用第三方库QtXlsx操作Excel表,实现MySQL读取的数据保存至excel文件
  • Transformer、ELMo、GPT、BERT的详细理解
  • 辽宁做网站公司/申请百度收录网址
  • 鞍山网站制作推广/网站百度推广
  • 在线建设房屋设计网站/磁力宝
  • 织梦网站流动广告代码/如何进行搜索引擎优化?
  • 怎么在悉尼做网站/小红书如何引流推广
  • 网站推广公司有哪些/免费技能培训网