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

西安高端网站制作电商网站开发app意义

西安高端网站制作,电商网站开发app意义,dedecms做的网站首页被挂马,外贸推广课程我目前手头上的项目#xff0c;需要编译在板端Linux上运行#xff0c;但是日常daily调试多在Windows上开发。这就涉及到同一份代码在多平台上的编译个运行。有一次遇到了一个奇怪的现象#xff1a;跑同样的一份代码#xff0c;Windows和Linux出来的结果是不一致的。最终确定…我目前手头上的项目需要编译在板端Linux上运行但是日常daily调试多在Windows上开发。这就涉及到同一份代码在多平台上的编译个运行。有一次遇到了一个奇怪的现象跑同样的一份代码Windows和Linux出来的结果是不一致的。最终确定到不一致的原因出现在unordered_map上就把这次记录总结下来。 这次不一致发生在处理一个状态序列的投票操作。从编程的角度而言最适合投票操作的容器就是键值对key放置投票的内容value放置投票的次数。在C中STL提供了两个相关容器map和unordered_map。在代码上选择了unordered_map来实现。 问题复现 我把这个问题简化假设车的类型有四种情况分别为UNKNOWN、SMALL、MIDDLE、BIG。现有15次的估计以出现次数最多的类型作为其最终类型。代码非常简单 #include iostream #include unordered_map #include stringint main() {std::unordered_mapstd::string, int vehs;vehs[UNKNOWN] 5;vehs[SMALL] 3;vehs[MIDDLE] 5;vehs[BIG] 2;std::string max_type;int max_times -1;auto iter vehs.begin();for (; iter ! vehs.end(); iter) {if (iter-second max_times) {max_times iter-second;max_type iter-first;}std::cout iter-first ;}std::cout std::endl;std::cout max_type : max_type std::endl;return 0; }在Windows平台下编译并运行代码 BIG UNKNOWN SMALL MIDDLE max_type : UNKNOWN在Linux平台下编译并运行代码 BIG MIDDLE SMALL UNKNOWN max_type : MIDDLE可以看到在Windows和Linux两个平台下的运行结果中出现次数最多的车的类型一个为UNKNOWN一个为MIDDLE。主要原因是这两种类型都是5次最多。这时unordered_map的遍历顺序就很重要了这将直接关系到最终的输出结果。通过打印结果可以看到两个平台下的遍历顺序是不一致的。 在C中STL提供了两个键值对容器map和unordered_map。上面的代码采用的是unordered_map容器如果将其改成map容器呢还会发生这种不一致的结果么 std::mapstd::string, int vehs; // 将unordered_map修改为map此时再在Windows和Linux平台下分别编译并运行代码最终的输出都是一致的 BIG MIDDLE SMALL UNKNOWN max_type : MIDDLE也就是说这种平台不一致性只发生在unordered_map容器上而不发生在map容器上。 原因分析 map和unordered_map分别在Windows和Linux上的不同运行结果主要体现在遍历顺序上。对于map而言两个平台上的遍历顺序是一致的而对于unordered_map而言两个平台上的遍历顺序是不一致的。 遍历顺序的不同究其根本主要体现在其内部构造的不同 map的内部构造 map的内部实现了一个红黑树红黑树是非严格平衡二叉搜索树而AVL是严格平衡二叉搜索树红黑树具有自动排序的功能因此map内部的所有元素都是有序的。红黑树的每一个节点都代表着map的一个元素。因此对于map进行的查找删除添加等一系列的操作都相当于是对红黑树进行的操作。 unordered_map的内部构造 unordered_map的内部实现了一个哈希表也叫散列表通过把关键码值映射到Hash表中一个位置来访问记录查找的时间复杂度可达到O(1)其在海量数据处理中有着广泛应用。因此其元素的排列顺序是无序的。 两者在运行效率和占用内存的对比 运行效率方面unordered_map最高而map效率较低但提供了稳定效率和有序的序列占用内存方面map内存占用略低unordered_map内存占用略高而且是线性成比例的 需要无序容器快速查找删除不担心略高的内存时可以选择unordered_map需要有序容器稳定查找删除效率内存很在意时候用map。 因此如果需要使用map那么key需要定义operator用于进行有序的排序如果需要使用unordered_map那么key需要定义hash_value函数并且定义operator用于hash值的计算。而 当使用map时Windows和Linux对于operator的定义都是一致的当使用unordered_map时Windows和Linux对于operator的定义都是一致的对于hash_value函数的定义是不一致的 从而在使用unordered_map时Windows和Linux使用两种不同的哈希函数产生不同的哈希码从而依次产生不同的存储区放置导致在迭代时产生不同的顺序。 相关阅读 c - Windows 和 Linux 上 std::unordered_map 容器的不同行为
http://www.hkea.cn/news/14408905/

相关文章:

  • 企业品牌网站建设费用网站建设的pest分析
  • 怎么模仿网站做ppt网站建设优化培训
  • mini主机做网站服务器湖北微网站建设多少钱
  • 如何创建一个企业网站学院网站建设用户需求分析报告
  • 江门做公司网站山东省建设监理协会网站
  • 郑州做网站的企业珠海注册公司哪家代理好
  • 做ppt的软件怎么下载网站a5源码网站
  • 网站上不去首页seo要怎么办网页设计实训报告1200
  • 旅游搭建网站营销型网站建设概述
  • 艺术作品欣赏网站注册网站排名公司
  • 网站设计公司收费标准sem优化服务公司
  • 网站开发调查问卷广东省建设执业资格注册中心网站
  • 外贸平台网站有哪些长沙网站设计公司排名
  • 做化工的外贸网站都有什么做网站的软件dw
  • thinksns网站开发交易网站建设具体方案
  • 临城网站视频直播sdk
  • 学做电影网站有人看片吗免费的
  • 建设网站的费用预算厦门国外网站建设公司
  • 网上做名片的网站找人做的网站怎么
  • 物流网站建设与管理汽车案例网站
  • 南宁霸屏网站开发网络舆情分析报告范文
  • 苏州中小型网站建设wordpress图文安装教程
  • 镇江网站托管wordpress菜单调用
  • 我有云服务器如何建站郑州做定制网站的公司
  • 河南企业网官方网站品牌建设的最高境界是培育客户的
  • 广东网站建设seo优化网站建设 佛山
  • wordpress建好站了打不开首页产品包装设计公司网站
  • 昭通建网站win10系统优化
  • 网站设计需求文档范例石家庄房产网上备案查询
  • 厦门做模板网站的公司江苏住房城乡建设部部官方网站