C++进阶-STL set/multiset容器和map容器的简单认识

news2025/1/10 17:17:25

set/multiset容器的简单认识

    • set基本概念
      • set与multiset 的区别:
      • set容器的构造和赋值
      • set容器的大小和交换
      • set容器的插入与删除
      • set容器的查找和统计
      • set容器-set和multiset的区别
      • set容器内置类型指定排序规则
      • set容器自定义数据类型指定排序规则
    • pair对组创建
    • map容器的基本概念
      • map容器构造和赋值
      • map容器大小和交换
      • map容器插入和删除
      • map容器查找和统计
      • map容器排序

set基本概念

set的所有元素在插入时会自动被排序,其本质 set/multiset 属于并联式容器,底层结构是用二叉树实现的

set与multiset 的区别:

  • set不允许容器中有重复的元素
  • multiset允许容器中有重复的元素

使用时仅需要包含一个 set 的头文件

#include <set>

set容器的构造和赋值

  • set<T> st; 默认构造函数
#include <iostream>
#include <string>
#include <set>
using namespace std;

int main()
{
	//默认构造函数
	set<int> st;
	st.insert(12);
}
  • set(const set<T>& st); 拷贝构造函数
#include <iostream>
#include <string>
#include <set>
using namespace std;

int main()
{
	//默认构造函数
	set<int> st;
	st.insert(12);
	//拷贝构造函数
	set<int> st2(st);
}
  • set& operator=(const set<T>& st); 重载等号操作符
#include <iostream>
#include <string>
#include <set>
using namespace std;

int main()
{
	//默认构造函数
	set<int> st;
	st.insert(12);
	set<int> st2;
	//重载等号操作符赋值
	st2 = st;
}

set容器的大小和交换

用于统计set容器的大小以及交换set容器

  • size(); 返回容器中元素的数目
在这里插入代码片
  • empty(); 判断容器是否为空
#include <iostream>
#include <string>
#include <set>
using namespace std;

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	string str = (((int)st.empty()) == 0) ? "不为空" : "为空";
	std::cout << "容器st是否为空: " << str << std::endl;
}

在这里插入图片描述

  • swap(st); 交换两个集合容器
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	set<int> st2;
	for (int i = 11; i < 20; i++)
	{
		st2.insert(i);
	}
	std::cout << "执行交换前 st的数据信息为:" << std::endl;
	printf(st);
	std::cout << "执行交换前 st2的数据信息为:" << std::endl;
	printf(st2);
	st.swap(st2);
	std::cout << "执行交换后 st的数据信息为:" << std::endl;
	printf(st);
	std::cout << "执行交换后 st2的数据信息为:" << std::endl;
	printf(st2);
}

执行结果

set容器的插入与删除

  • insert(elem); 在容器中插入元素
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	for (int i =100; i > 90; i--)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
}

运行结果
以上案例说明set容器在插入元素后,会进行排序

  • clear(); 清除所有元素
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	st.clear();
	std::cout << "清空数据据后 st的数据信息为:" << std::endl;
	printf(st);
}

执行结果

  • erase(pos); 删除pos迭代器所指的元素,返回下一个元素速度迭代器
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	set<int>::iterator it = st.erase(st.begin());
	std::cout << "删除st.begin元素后 返回的下一元素位置指向:" << *it << std::endl;
	std::cout << "删除st.begin元素后 set容器值列表为:" << std::endl;
	printf(st);
}

执行结果

  • erase(beg, end); 删除区间[beg, end)的所有元素,返回下一个元素的迭代器
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	set<int>::iterator it = st.erase(st.begin(), ++(++st.begin()));
	std::cout << "删除[st.begin, ++(++st.begin()))元素后 返回的下一元素位置指向:" << *it << std::endl;
	std::cout << "删除元素后 set容器值列表为:" << std::endl;
	printf(st);
}

执行结果

  • earse(elem); 删除容器中值为elem的元素
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	st.erase(1);
	std::cout << "删除元素 1 后 set容器值列表为:" << std::endl;
	printf(st);
}

执行结果

set容器的查找和统计

  • find(key); 查找key是否存在,若存在,返回该key值的元素的迭代器,若不存在,返回 set.end();
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const set<int> st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	set<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	
	set<int>::iterator it = st.find(1);
	std::cout << "查找元素 1 的位置:" << &it << " 其指向的元素值为:"  << *it << std::endl;

	set<int>::iterator it_not_find = st.find(100);
	if (it_not_find == st.end())
	{
		std::cout << "元素100 未查找到" << std::endl;
	}
}

执行结果

  • count(key); 统计元素key的个数
#include <iostream>
#include <string>
#include <set>
using namespace std;

void printf(const multiset<int> st)
{
	for (multiset<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

int main()
{
	multiset<int> st;
	for (int i = 0; i < 10; i++)
	{
		st.insert(i);
		st.insert(i);
		st.insert(i);
	}
	std::cout << "插入数据后 st的数据信息为:" << std::endl;
	printf(st);
	
	int count = st.count(1);
	std::cout << "统计元素 1 的数量,元素共有:" << count << " 个:" << std::endl;
}

执行结果
这里使用multiset举例,因为set不会存储重复插入的元素,所有元素数量均为1个

set容器-set和multiset的区别

  • set不可以插入重复数据,而multiset可以插入重复数据
  • set插入数据的同时会返回插入结果,表示插入是否成功
  • multiset不会监测数据,因此可以插入重复数据
#include <iostream>
#include <string>
#include <set>
using namespace std;

int main()
{
	set<int> st;
	pair<set<int>::iterator, bool> ret = st.insert(3);
	if (ret.second)
	{
		std::cout << "插入成功" << std::endl;
	}
	else
	{
		std::cout << "插入失败" << std::endl;
	}
	ret = st.insert(3);
	if (ret.second)
	{
		std::cout << "插入成功" << std::endl;
	}
	else
	{
		std::cout << "插入失败" << std::endl;
	}
}

执行结果
内部使用的 pair<set<int>::iterator, bool> 是一个键值对的结构,调用set.insert() 后,会触发重复值监测,如果检测到重复值,那么会导致返回插入失败的结果
multiset没有这个操作

set容器内置类型指定排序规则

set容器默认排序规则是从小到大,利用仿函数,可以改变排序规则

#include <iostream>
#include <string>
#include <set>
#include <ctime>
using namespace std;

class CustomCompare
{
public:
	//数据可能被修改,所以需要使用const限定调用函数的set对象不被修改
	bool operator()(int v1, int v2) const
	{
		return v1 > v2;
	}
};

void printf(const set<int>& st)
{
	for (set<int>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

void printf_custom(set<int, CustomCompare>& st)
{
	for (set<int, CustomCompare>::iterator it = st.begin(); it != st.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}

void init(set<int>& st)
{
	//随机数种子
	srand((unsigned int)time(NULL));
	for (int i = 0; i < 10; i++)
	{
		st.insert(rand() % 60 + 40);
	}
}

int main()
{
	set<int> st;
	init(st);
	std::cout << "初始化set后的值(当前是默认升序排列):" << std::endl;
	printf(st);

	//指定排序规则为从大到小 - 需要在创建容器的时候指定
	set<int, CustomCompare> st2;
	st2.insert(12);
	st2.insert(14);
	st2.insert(54);
	st2.insert(34);
	st2.insert(76);
	std::cout << "初始化set后的值(当前是定义了自定义仿函数排序规则):" << std::endl;
	printf_custom(st2);
}

运行结果

set容器自定义数据类型指定排序规则

#include <iostream>
#include <string>
#include <set>
#include <ctime>
using namespace std;

class Person
{
private:
	string m_Name;
	int m_Age;
public:
	Person(string name, int age)
	{
		this->m_Name = name;
		this->m_Age = age;
	}
	void printf() const
	{
		std::cout << "姓名:" << this->m_Name << " 年龄:" << this->m_Age << std::endl;
	}
	int getAge()
	{
		return this->m_Age;
	}
};

class PersonCompare
{
public:
	bool operator()(Person p1, Person p2) const
	{
		return p1.getAge() > p2.getAge();
	}
};

void printf(const set<Person, PersonCompare>& st)
{
	for (set<Person, PersonCompare>::const_iterator it = st.begin(); it != st.end(); it++)
	{
		it->printf();
	}
}

int main()
{
	set<Person, PersonCompare> st;
	Person p1("张三",12);
	Person p2("李四", 54);
	Person p3("王二", 23);
	Person p4("麻子", 87);
	Person p5("刘武", 45);
	Person p6("无硫", 22);

	st.insert(p1);
	st.insert(p2);
	st.insert(p3);
	st.insert(p4);
	st.insert(p5);
	st.insert(p6);
	printf(st);
}

执行结果

pair对组创建

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

两种创建方式:

  • pair<type, type> p (value, value2);
  • pair<type, type> p = make_pair(value, value2);
#include <iostream>
#include <string>
using namespace std;

int main()
{
	pair<string, int> p1("测试Pair", 111);
	std::cout << "插入的值为:(" << p1.first << ", " << p1.second << ")" << std::endl;
	p1 = make_pair("测试pair第二次", 121);
	std::cout << "插入的值为:(" << p1.first << ", " << p1.second << ")" << std::endl;
}

执行结果

map容器的基本概念

  • map中所有元素都是pair
  • pair中的第一个元素是key(键值),起到索引所用,第二个元素是value(实值)
  • 所有元素都会根据元素的键值自动排列

本质:

  • map/multimap 属于并联式容器,底层结构是用二叉树实现

优点:

  • 可以根据key值快速查找到value值

map和multimap 的区别:

  • map不允许容器中有重复的key值元素
  • multimap允许容器中有重复的key值元素

map容器构造和赋值

  • map<T1, T2> mp; 默认构造函数
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	//默认构造函数
	map<string, int> mp;
}
  • map(const map<T1, T2>& mp); 拷贝构造函数
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	//默认构造函数
	map<string, int> mp;
	//拷贝构造
	map<string, int> mp2(mp);
}
  • map& operator=(const map& map); 重载等号操作符
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	//默认构造函数
	map<string, int> mp;
	//重载=号赋值
	map<string, int> mp2 = mp;
}

map容器大小和交换

  • size(); 返回容器中的元素的数目
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	map<string, int> mp;
	std::cout << mp.size() << std::endl;
}
  • empty(); 判别容器中元素是否为空
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	map<string, int> mp;
	mp.insert(pair<string,int>("测试", 12));
	std::cout << mp.empty() << std::endl;
}
  • swap(st); 交换两个集合容器
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	map<string, int> mp;
	map<string, int> mp2;
	mp.swap(mp2);
}

map容器插入和删除

  • insert(elem); 在容器中插入元素
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	map<string, int> mp;
	//第一种方法
	mp.insert(pair<string,int>("测试", 12));
	//第二种方法
	mp.insert(make_pair("测试2", 12));
	//第三种方法
	mp.insert(map<int, int>::value_type("测试3", 12))
	//第四种 不建议使用 没有这个key值调用时,会根据您的key值创建一个信息数据出来并填充默认值
	mp["测试5"] = 13for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++)
	{
		std::cout << "(" << (*it).first << " ," << (*it).second << ")" << std::endl; 
	}
}
  • clear(); 清除所有元素
map<string, int> mp;
mp.insert(pair<string,int>("测试", 12));
mp.clear();
  • erase(pos); 删除pos迭代器所指的元素,返回下一个元素的迭代器
map<string, int> mp;
mp.insert(pair<string,int>("测试", 12));
map<string, int>::iterator next = mp.erase(mp.begin());
  • erase(beg, end); 删除[beg, end)区间所有的元素,返回下一个元素的迭代器
map<string, int> mp;
mp.insert(pair<string,int>("测试", 12));
map<string, int>::iterator next = mp.erase(mp.begin(), mp.end());
  • erase(key); 删除容器中key值为key的元素
map<string, int> mp;
mp.insert(pair<string,int>("测试", 12));
mp.erase(12);

map容器查找和统计

  • find(key); 查找key是否存在,若存在,返回该键的元素的迭代器,若不存在,返回map.end();
map<string, int> mp;
mp.insert(pair<string, int>("测试", 12));
map<string, int>::iterator find_result = mp.find("测试");
if (find_result == mp.end())
{
	std::cout << "未查找" << std::endl;
}
else
{
	std::cout << "查找到结果" << std::endl;
}
  • count(key); 统计key元素个数
multimap <string, int> mp;
mp.insert(pair<string, int>("测试", 12));
mp.insert(pair<string, int>("测试", 13));
int count =  mp.count("测试");
std::cout << "查找到结果" <<  count << "个" << std::endl;

map容器排序

利用仿函数,改变排序规则

#include <iostream>
#include <string>
#include <map>
using namespace std;

class Compare
{
public:
	bool operator()(string k1, string k2) const
	{
		return k1 > k2;
	}
};

int main()
{
	multimap <string, int , Compare> mp;
	mp.insert(pair<string, int>("测试1", 12));
	mp.insert(pair<string, int>("测试2", 13));
	
	for (map<string, int>::iterator it = mp.begin(); it != mp.end(); it++)
	{
		std::cout << "(" << (*it).first << ", " << (*it).second << ")" << std::endl;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1199113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“富婆”通讯录——让你少奋斗50年

文章目录 一、项目需求分析二、通讯录各功能实现思路及代码准备工作2.1、打印一个菜单&#xff0c;提供用户选择功能2.2、添加联系人信息2.3、删除联系人信息2.4、查询联系人信息2.5、修改联系人信息2.6、显示所有联系人信息2.7、对所有联系人信息进行排序整理2.8、删除所有联系…

AI小镇Generative Agents: Interactive Simulacra of Human Behavior

文章目录 1 Introduction2 Related Works2.1 Human-AI Interaction2.2 Belivable Proxies for Human Behavior2.3 Large Language Model and Human Behavior 3 Generative agent behavior and interaction&#xff08;行为与交互&#xff09;3.1 Agent Avatar and Communicatio…

【MySQL】列属性

文章目录 CHAR和VARCHAR插入单行 INSERT INTO插入多行插入分层行 LAST_INSERT_IN()创建表复制 CREAT TABLE AS更新单行 UPDATE...SET更新多行在UPDATES中使用子查询【需着重复习】删除行 DELETE恢复数据库到原始状态 CHAR和VARCHAR CHAR(50)&#xff1a;存储文本占5个字符&…

LangChain应用全解析

一、Langchain基础 1.Langchain简介 (1)替换模型 from langchain.prompts import ChatPromptTemplatechat ChatOpenAI(temperature0) 使用代理ip llm ChatOpenAI(model_name"gpt-3.5-turbo", max_tokens2048, temperature0.5,openai_api_keyapi_key,openai_ap…

虚幻引擎:如何进行关卡切换?无缝切换?

一丶非无缝切换 在切换的时候会先断开连接,等创建好后才会链接,造成体验差 蓝图中用到的节点是 Execute Console Command 二丶无缝切换 链接的时候不会断开连接,中间不会出现卡顿,携带数据转换地图 1.需要在gamemode里面开启无缝漫游,开启之后使用上面的切换方式就可以做到无缝…

web前端开发第4次Dreamweave课堂练习/html练习代码《出版界推出一批纪念抗美援朝胜利70周年主题图书》

目标图片&#xff1a; 文字素材&#xff1a; 出版界推出一批纪念抗美援朝胜利70周年主题图书 2023-08-01来源&#xff1a;新华社 为纪念抗美援朝战争胜利70周年&#xff0c;出版界集中推出了“抗美援朝亲历记丛书”《新中国立国之战——抗美援朝战争的回顾与思考》《毛泽东与…

计算机网络基础知识-网络协议

一:计算机网络层次划分 1. 网络层次划分 2. OSI七层网络模型 1)物理层(Physical Layer):及硬件设备,物理层确保原始的数据可在各种物理媒体上传输,常见的设备名称如中继器(Repeater,也叫放大器)和集线器; 2)数据链路层(Data Link Layer):数据链路层在物理层提…

【数据结构】:红黑树

1、红黑树的简介 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;是在计算机科学中用到的一种数据结构。 红黑树是在1972年由Rudolf Bayer发明的&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。后来…

Leetcode—2471.逐层排序二叉树所需的最少操作数目【中等】(置换环解法!)

2023每日刷题&#xff08;二十七&#xff09; Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想 参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* …

YOLO目标检测——水果检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;水果分类检测数据集的应用场景主要包括农贸市场监管、水果品质检测、超市零售管理等数据集说明&#xff1a;水果分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有苹果香蕉橙子图片标签说明&#xff1a;使…

功能案例 -- 通过开关,改变白天和黑夜

效果展示 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>:root {--default-bac-color: #f…

MGA-WPA

作者未提供代码

分布式理论基础:CAP定理

什么是CAP CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;这三个基本需求&#xff0c;最多只能同时…

关于我用半个月过了软件设计师这件事

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 前言 有关考取软件设计师证书的好处我就不在…

hive和spark-sql中 日期和时间相关函数 测试对比

测试版本&#xff1a; hive 2.3.4 spark 3.1.1 hadoop 2.7.7 1、增加月份 add_months(timestamp date, int months)add_months(timestamp date, bigint months)Return type: timestampusage:add_months(now(),1) 2、增加日期 adddate(timestamp startdate, int days)…

【信息安全原理】——传输层安全(学习笔记)

&#x1f4d6; 前言&#xff1a;为保证网络应用&#xff0c;特别是应用广泛的Web应用数据传输的安全性&#xff08;机密性、完整性和真实性&#xff09;&#xff0c;可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议&#xff0c;包括&…

Linux内核有什么之内存管理子系统有什么第七回 —— 小内存分配(5)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么第六回 —— 小内存分配&#xff08;4&#xff09; 本文内容参考&#xff1a; linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇&#xff1a;第四部分 内存管理—— 刘超》 4.6 深入理解 Linux 虚拟内存…

服务器中了locked勒索病毒怎么处理,locked勒索病毒解密,数据恢复

近几年&#xff0c;网络应用技术得到了迅速发展&#xff0c;越来越多的企业开始走向数字化办公&#xff0c;极大地为企业的生产运营提供了帮助&#xff0c;但是网络技术的发展也为网络安全埋下隐患。最近&#xff0c;locked勒索病毒非常嚣张&#xff0c;几乎是每隔两个月就会对…

MySQL 约束特殊查询

MySQL 约束&特殊查询 文章目录 MySQL 约束&特殊查询1. 数据库约束1.1 约束类型1.2 NULL约束1.3 NUIQUE&#xff1a;唯一约束1.4 DEFAULT&#xff1a;默认值约束1.5 PRIMARY KEY&#xff1a;主键约束1.6 FOREIGN KEY&#xff1a;外键约束1.7 CHECK约束 2. 表的关系2.1 一…

EXCEL中将UTC时间戳转为日期格式(精确到秒)

UTC时间戳的格式通常是一个整数&#xff0c;表示从1970年1月1日00:00:00 UTC到当前时间的总秒数。它可以以秒或毫秒为单位表示。例如&#xff0c;如果当前时间是2023年3月17日 12:34:56 UTC&#xff0c;则对应的UTC时间戳为1679839496&#xff08;以秒为单位&#xff09;或1679…