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

米拓建站模板yangdesign工业设计公司

米拓建站模板,yangdesign工业设计公司,新冠死亡最新消息今天,网站备案掉了std::set 是C标准库中的容器之一#xff0c;它基于红黑树实现。std::set 利用红黑树的特性来实现有序的插入、查找和删除操作#xff0c;并且具有较好的平均和最坏情况下的时间复杂度。 当向 std::set 插入元素时#xff0c;它会按照特定的比较函数#xff08;bool less标准库中的容器之一它基于红黑树实现。std::set 利用红黑树的特性来实现有序的插入、查找和删除操作并且具有较好的平均和最坏情况下的时间复杂度。 当向 std::set 插入元素时它会按照特定的比较函数bool lessT::operator() const(const T lhs, const T rhs)将新元素插入到红黑树的适当位置以保持树的有序性质。插入操作的平均时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn)其中 n n n是 std::set 中元素的数量。查找操作find()使用红黑树的性质通过比较函数在树中进行二分查找查找操作的平均时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn)。 但是当我们把 struct 放入 std::set 会有什么后果呢因为 std::set 需要在插入到时候排序所以需要重载 struct 的比较运算符这个时候就出现问题了首先我们定义一个结构体 Person struct Person {Person(int _ID, string _name, int _age) : ID(_ID), age(_age), name(_name) {}int ID;int age;string name; };当我们直接插入到 std::setPerson 中时会报 complier error 的错误因此简单补写一个比较运算符重载如下 bool operator(const Person lhs, const Person rhs) {return lhs.age rhs.age; }OK编译起来没有问题但是我们运行测试一下下面的find操作就会发现问题 #include iostream #include setusing namespace std;struct Person {Person(int _ID, string _name, int _age) : ID(_ID), age(_age), name(_name) {}int ID;int age;string name; };bool operator(const Person lhs, const Person rhs) {return lhs.age rhs.age; }int main() {setPerson person;for (int i 0; i 1000; i) {Person p_tmp(i, sxj, 10);person.insert(p_tmp);}Person p(2000, sxj, 10);auto it person.find(p);if (it ! person.end())cout Find Person --- ID: it-ID name: it-name age: it-age;elsecout Cant find endl;return 0; }明明不在set中的 ID-2000 的Person也可以被找到。造成这个结果的原因是我们所提供的 operator() 当Person p1、p2在 p1p2 与 p2p2 都不成立时find 就会判断 p1 和 p2 是同一个 Person 因此会造成这样的错误结果。 解决方案就是补充完整我们的比较运算符重载完整代码如下 #include iostream #include setusing namespace std;struct Person {Person(int _ID, string _name, int _age) : ID(_ID), age(_age), name(_name) {}int ID;int age;string name; };bool operator(const Person lhs, const Person rhs) {if (lhs.ID rhs.ID) return true;if (lhs.ID rhs.ID) return false;if (lhs.name rhs.name) return true;if (lhs.name rhs.name) return false;return lhs.age rhs.age; }int main() {setPerson person;for (int i 0; i 1000; i) {Person p_tmp(i, sxj, 10);person.insert(p_tmp);}Person p(2000, sxj, 10);auto it person.find(p);if (it ! person.end())cout Find Person --- ID: it-ID name: it-name age: it-age;elsecout Cant find endl;return 0; }
http://www.dnsts.com.cn/news/241533.html

相关文章:

  • 成都电商网站制作免费做logo设计的网站
  • ui设计师做网站投资管理公司注册条件
  • 网站设计的公司报价新东方
  • 桂林 网站建设wordpress 自定义栏目 图片
  • 免费模板网站推荐在wordpress官网建站
  • 自己学网站建设自己做返利网站吗
  • 做网站着用什么软件外文网站做t检验分析
  • 广州网站建设定制哪家口碑好wordpress自定义弹窗
  • 网站文章更新wordpress 重命名
  • 如何做提卡网站一级a做爰片 网站就能看
  • 城市建设服务中心网站石家庄制作网站的公司简介
  • 网站运营维护中需要用到什么服务器wordpress加载jquery库
  • 虐做视频网站仓库管理系统er图
  • 文字游戏做的最好的网站网页图片尺寸
  • 郑州中色十二冶金建设有限公司网站网站识别手机电脑自动跳转
  • wordpress建站版本推荐谷歌推广运营
  • 如何经营自己的网站网站 功能需求
  • 现在做网站建设挣钱吗做灯笼手工简单做法
  • 安阳区号0372福州短视频seo网红
  • 做网站网站建设专业公司网站开发代码编辑器
  • 机房建设网站精美免费ppt模板下载
  • 快捷建站专家大收录量的网站怎么做
  • 网站建设 美食站点重庆seo代理价格
  • 企业建网站解决方案WordPress章节插件
  • 婚纱照网站模板网站 数据报表如何做
  • 做的网站如何被百度搜到山西省国贸网站建设
  • flash网站有哪些wordpress图片本地
  • 个人网站建设实训目的网站开发和优化关系
  • 电话销售做网站太原做推广的公司
  • 商城网站商家入驻功能移动网站开发面试题