淮安软件园哪家做网站建设网站需要有什么特色

news/2025/10/7 10:46:41/文章来源:
淮安软件园哪家做网站,建设网站需要有什么特色,南昌成都网站建设方案,中国建设银行在网站怎么签约当我们谈论编程中的数据结构时#xff0c;顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据#xff0c;为程序员提供了灵活性和性能的平衡。 Qt 中提供了丰富的容器类…当我们谈论编程中的数据结构时顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据为程序员提供了灵活性和性能的平衡。 Qt 中提供了丰富的容器类用于方便地管理和操作数据。这些容器类涵盖了各种不同的用途从简单的动态数组到复杂的映射和集合。本章我们将主要学习关联容器主要包括 QMap QSet和 QHash它们提供了键值对存储和检索的功能允许通过键来快速查找值。 1.1 QMap QMap 是 Qt 中的有序关联容器用于存储键值对并按键的升序进行排序。以下是关于 QMap 的概述 1.1.1 特点和用途 有序性 QMap 中的元素是有序的按照键的升序进行排列。唯一键 每个键在 QMap 中是唯一的不允许重复键。键值对存储 存储键值对每个键关联一个值。性能 插入和查找操作的平均复杂度是 O(log n)适用于需要按键排序并进行频繁查找的场景。 1.1.2 函数和功能 以下是关于 QMap 常用函数及其功能的总结 函数功能insert(const Key key, const T value)向 QMap 中插入键值对。insertMulti(const Key key, const T value)向 QMap 中插入允许相同键的多个值。remove(const Key key)移除指定键的元素。value(const Key key) const返回指定键的值。contains(const Key key) const判断是否包含指定键。isEmpty() const判断 QMap 是否为空。size() const返回 QMap 中键值对的数量。clear()清空 QMap 中的所有元素。keys() const返回 QMap 中所有键的列表。values() const返回 QMap 中所有值的列表。begin()返回指向 QMap 开始位置的迭代器。end()返回指向 QMap 结束位置的迭代器。constBegin() const返回指向 QMap 开始位置的常量迭代器。constEnd() const返回指向 QMap 结束位置的常量迭代器。find(const Key key) const返回指向 QMap 中指定键的迭代器。lowerBound(const Key key) const返回指向 QMap 中不小于指定键的第一个元素的迭代器。upperBound(const Key key) const返回指向 QMap 中大于指定键的第一个元素的迭代器。count(const Key key) const返回指定键的数量。toStdMap() const将 QMap 转换为 std::map。 这些函数提供了对 QMap 中键值对的插入、删除、查找和遍历等操作。根据需求选择适当的函数以满足操作要求。 1.1.3 应用案例 正如如下代码所示我们提供了QMapQString,QString字典类型的关联数组该数组中一个键映射对应一个值QMap容器是按照顺序存储的如果项目中不在意顺序可以使用QHash容器使用QHash效率更高些。 #include QCoreApplication #include iostream #include QString #include QtGlobal #include QMap #include QMapIteratorint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QMapQString,QString map;map[1001] admin;map[1002] guest;map.insert(1003,lyshark);map.insert(1004,lucy);// map.remove(1002);// 根据键值对查询属性std::cout map[1002].toStdString().data() std::endl;std::cout map.value(1003).toStdString().data() std::endl;std::cout map.key(admin).toStdString().data() std::endl;// 使用STL语法迭代枚举Map键值对QMapQString,QString::const_iterator x;for(xmap.constBegin();x ! map.constEnd(); x){std::cout x.key().toStdString().data() : ;std::cout x.value().toStdString().data() std::endl;}// 使用STL语法实现修改键值对QMapQString,QString::iterator write_x;write_x map.find(1003);if(write_x !map.end())write_x.value() you ary in;// 使用QTglobal中自带的foreach遍历键值对QString each;// -- 单循环遍历foreach(const QString each,map.keys()){std::cout map.value(each).toStdString().data() std::endl;}// -- 多循环遍历foreach(const QString each,map.uniqueKeys()){foreach(QString x,map.value(each)){std::cout each.toStdString().data() : ;std::cout x.toStdString().data() std::endl;}}return a.exec(); }上述代码是如何使用QMap容器其实还有一个QMultiMap容器该容器其实是QMap的一个子集用于处理多值映射的类也就是说传统QMap只能是一对一的关系而QMultiMap则可以实现一个Key对应多个Value或者是反过来亦可实现一对多的关系。 如果总结起来可以发现两者的异同点 QMap 唯一键 QMap 中每个键都是唯一的不允许重复键。键排序 QMap 中的元素是按键的升序排列的。使用场景 适用于需要键值对有序且键唯一的场景。 QMultiMap 允许重复键 QMultiMap 中可以包含重复的键即多个键可以映射到相同的值。键排序 QMultiMap 中的元素是按键的升序排列的。使用场景 适用于允许键重复并且需要键值对有序的场景。 相同点 键值对 都是用于存储键值对的容器。有序性 元素在容器中是有序的按键的升序排列。 不同点 键唯一性 QMap 中每个键都是唯一的而 QMultiMap 允许重复的键。使用场景 QMap 适用于需要键唯一的情况而 QMultiMap 适用于允许键重复的情况。 如下所示展示了如何使用QMultiMap实现一对多的映射关系 #include QCoreApplication #include iostream #include QString #include QList #include QMultiMapint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QMultiMapQString,QString mapA,mapB,mapC,mapD;mapA.insert(lyshark,1000);mapA.insert(lyshark,2000);mapB.insert(admin,3000);mapB.insert(admin,4000);mapC.insert(admin,5000);// 获取到里面的所有keylyshark的值QListQString ref;ref mapA.values(lyshark);for(int x0;xref.size();x){std::cout ref.at(x).toStdString().data() std::endl;}// 两个key相同可相加后输出mapD mapB mapC;ref mapD.values(admin);for(int x0;xref.size();x){std::cout ref.at(x).toStdString().data() std::endl;}return a.exec(); }1.2 QHash QHash 是一个无序的关联容器它存储键值对但与 QMap 不同QHash 不会对键进行排序。 1.2.1 特点和用途 键值对存储 QHash 中的元素以键值对的形式存储但与 QMap 不同QHash 中的元素是无序的。 无序性 QHash 中的元素是无序的没有特定的排列顺序。 唯一键 每个键在 QHash 中是唯一的不允许重复键。 性能 插入和查找操作的平均复杂度是 O(1)适用于需要快速插入和查找的场景。 1.2.2 函数和功能 以下是关于 QHash 常用函数及其功能的总结 函数功能insert(const Key key, const T value)向 QHash 中插入键值对。insertMulti(const Key key, const T value)向 QHash 中插入允许相同键的多个值。remove(const Key key)移除指定键的元素。value(const Key key) const返回指定键的值。contains(const Key key) const判断是否包含指定键。isEmpty() const判断 QHash 是否为空。size() const返回 QHash 中键值对的数量。clear()清空 QHash 中的所有元素。keys() const返回 QHash 中所有键的列表。values() const返回 QHash 中所有值的列表。begin()返回指向 QHash 开始位置的迭代器。end()返回指向 QHash 结束位置的迭代器。constBegin() const返回指向 QHash 开始位置的常量迭代器。constEnd() const返回指向 QHash 结束位置的常量迭代器。find(const Key key) const返回指向 QHash 中指定键的迭代器。count(const Key key) const返回指定键的数量。unite(const QHash other)合并两个 QHash将 other 中的元素合并到当前 QHash。intersect(const QHash other)保留两个 QHash 中共有的元素删除其他元素。subtract(const QHash other)从当前 QHash 中移除与 other 共有的元素。toStdHash() const将 QHash 转换为 std::unordered_map。 这些函数提供了对 QHash 中键值对的插入、删除、查找和遍历等操作。根据需求选择适当的函数以满足操作要求。 1.2.3 应用案例 QHash与QMap其实是一样的如果不需要对键值对进行排序那么使用QHash将会得到更高的效率正是因为Hash的无序才让其具备了更加高效的处理能力。 #include QCoreApplication #include iostream #include QString #include QHashint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QHashQString, QString hash;hash[1001] admin;hash[1002] guest;hash.insert(1003, lyshark);hash.insert(1004, lucy);// hash.remove(1002);// 根据键值对查询属性std::cout hash[1002].toStdString().data() std::endl;std::cout hash.value(1003).toStdString().data() std::endl;std::cout hash.key(admin).toStdString().data() std::endl;// 使用STL语法迭代枚举Hash键值对QHashQString, QString::const_iterator x;for (x hash.constBegin(); x ! hash.constEnd(); x){std::cout x.key().toStdString().data() : ;std::cout x.value().toStdString().data() std::endl;}// 使用STL语法实现修改键值对QHashQString, QString::iterator write_x;write_x hash.find(1003);if (write_x ! hash.end())write_x.value() you are in;// 使用Qt中自带的foreach遍历键值对QString each;// -- 单循环遍历foreach (const QString each, hash.keys()){std::cout hash.value(each).toStdString().data() std::endl;}// -- 多循环遍历foreach (const QString each, hash.uniqueKeys()){foreach (QString x, hash.values(each)){std::cout each.toStdString().data() : ;std::cout x.toStdString().data() std::endl;}}return a.exec(); }这里需要说明一点与QMap一样QHash也能够使用QMultiHash其操作上与QMultiMap保持一致此处读者可自行尝试。 1.3 QSet QSet 是 Qt 中的无序关联容器类似于 C 标准库的 std::unordered_set。它主要用于存储唯一值而不关心元素的顺序。以下是关于 QSet 的概述 1.3.1 特点和用途 无序性 QSet 中的元素是无序的没有特定的排列顺序。唯一值 每个值在 QSet 中是唯一的不允许重复值。性能 适用于需要快速查找和检索唯一值的场景性能比有序容器如 QMap更高。底层实现 使用哈希表实现因此插入和查找操作的平均复杂度是 O(1)。 1.3.2 函数和功能 以下是关于 QSet 常用函数及其功能的总结 函数功能insert(const T value)向 QSet 中插入元素。contains(const T value) const判断是否包含指定元素。remove(const T value)移除指定元素。isEmpty() const判断 QSet 是否为空。size() const返回 QSet 中元素的数量。clear()清空 QSet 中的所有元素。unite(const QSet other)合并两个 QSet将 other 中的元素合并到当前 QSet。intersect(const QSet other)保留两个 QSet 中共有的元素删除其他元素。subtract(const QSet other)从当前 QSet 中移除与 other 共有的元素。begin()返回指向 QSet 开始位置的迭代器。end()返回指向 QSet 结束位置的迭代器。constBegin() const返回指向 QSet 开始位置的常量迭代器。constEnd() const返回指向 QSet 结束位置的常量迭代器。 这些函数提供了对 QSet 中元素的插入、删除、查找和遍历等操作。QSet 是一个无序容器用于存储唯一的元素。根据需求选择适当的函数以满足操作要求。 1.3.3 应用案例 QSet 集合容器是基于散列表哈希表的集合模板存储顺序同样不定查找速度最快其内部使用QHash实现。 #include QCoreApplication #include iostream #include QString #include QSetint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QSetQString set;set dog cat tiger;// 测试某值是否包含于集合if(set.contains(cat)){std::cout include std::endl;}return a.exec(); }1.4 嵌套案例总结 1.4.1 QList与QMap组合 代码通过结合使用 QList 和 QMap 实现了数据的嵌套存储。具体而言通过在 QMap 中存储键值对其中键是时间字符串而值是包含浮点数数据的 QList。这种结构使得可以方便地按时间检索相关联的数据集。 #include QCoreApplication #include iostream #include QString #include QtGlobal #include QList #include QMapint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QMapQString,QListfloat map;QListfloat ptr;// 指定第一组数据ptr.append(10.1);ptr.append(12.5);ptr.append(22.3);map[10:10] ptr;// 指定第二组数据ptr.clear();ptr.append(102.2);ptr.append(203.2);ptr.append(102.1);map[11:20] ptr;// 输出所有的数据QListfloat tmp;foreach(QString each,map.uniqueKeys()){tmp map.value(each);std::cout Time: each.toStdString().data() std::endl;for(qint32 x0;xtmp.count();x){std::cout tmp[x] std::endl;}}return a.exec(); }在示例中两组数据分别对应不同的时间键每组数据存储在相应的 QList 中。最后通过迭代输出了所有数据以时间为键检索相应的数据集并将每个数据集中的浮点数逐个输出。整体而言这种数据结构的嵌套使用有助于组织和检索多维度的数据。 1.4.2 QList合并为QMap 通过使用 QList 存储头部信息Header和相应的数值信息Values然后通过循环迭代将两个列表合并为一个 QMap。在这个 QMap 中头部信息作为键而数值作为相应的值形成了一个键值对应的字典结构。最后通过 QMap 的键值对操作输出了特定字典中的数据。 #include QCoreApplication #include iostream #include QString #include QtGlobal #include QList #include QMapint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QListQString Header {MemTotal,MemFree,Cached,SwapTotal,SwapFree};QListfloat Values {12.5,46.8,68,100.3,55.9};QMapQString,float map;// 将列表合并为一个字典for(int x0;xHeader.count();x){QString head Header[x].toStdString().data();float val Values[x];map[head] val;}// 输出特定字典中的数据std::cout map.key(100.3).toStdString().data() std::endl;std::cout map.value(SwapTotal) std::endl;return a.exec(); }整体而言这样的数据结构使得能够更方便地按照特定的头部信息检索相应的数值。 1.4.3 QMap拆分为QList 这段代码演示了如何使用 QMap 存储键值对并分别将键和值存储到两个 QList 中。首先通过 Display 函数输出了 QMap 中的键值对。 接着通过 map.keys() 和 map.values() 分别获取 QMap 中的所有键和值将它们存储到两个 QList 中并使用循环分别输出了这两个列表的内容。 #include QCoreApplication #include iostream #include QString #include QtGlobal #include QList #include QMapvoid Display(QMapQString,float map) {foreach(const QString each,map.uniqueKeys()){std::cout each.toStdString().data() std::endl;std::cout map.value(each) std::endl;} }int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QMapQString,float map;map[MemTotal] 12.5;map[MemFree] 32.1;map[Cached] 19.2;Display(map);QListQString map_key;QListfloat map_value;// 分别存储起来map_key map.keys();map_value map.values();// 输出所有的key值for(int x0;xmap_key.count();x){std::cout map_key[x].toStdString().data() std::endl;}// 输出所有的value值for(int x0;xmap_value.count();x){std::cout map_value[x] std::endl;}return a.exec(); }1.4.4 QList结构体排序 实现对包含结构体 MyStruct 的 QList 进行排序并输出排序后的结果。首先定义了一个包含整数的 QList通过 std::sort 函数按从大到小的顺序对该列表进行排序并使用 Display 函数输出排序后的结果。 其次定义结构体 MyStruct其中包含两个成员变量 uuid 和 uname。创建一个存储该结构体的 QList并添加了几个结构体对象。通过 devListSort 函数以结构体的 uuid 成员进行排序并使用循环输出排序后的结果。 #include QCoreApplication #include iostream #include QString #include QtGlobal #include QListstruct MyStruct {int uuid;QString uname; };void Display(QListint ptr) {foreach(const int each,ptr)std::cout each ;std::cout std::endl; }// 由大到小排列 int compare(const int infoA,const int infoB) {return infoA infoB; }// 针对结构体的排序方法 void devListSort(QListMyStruct *list) {std::sort(list-begin(),list-end(),[](const MyStruct infoA,const MyStruct infoB){return infoA.uuid infoB.uuid;}); }int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 定义并对单一数组排序QListint list {56,88,34,61,79,82,34,67,88,1};std::sort(list.begin(),list.end(),compare);Display(list);// 定义并对结构体排序QListMyStruct list_struct;MyStruct ptr;ptr.uuid1005;ptr.unameadmin;list_struct.append(ptr);ptr.uuid1002;ptr.uname guest;list_struct.append(ptr);ptr.uuid 1000;ptr.uname lyshark;list_struct.append(ptr);devListSort(list_struct);for(int x0;x list_struct.count();x){std::cout list_struct[x].uuid --- ;std::cout list_struct[x].uname.toStdString().data() std::endl;}return a.exec(); }上述这段代码演示了如何对一个包含整数的列表和一个包含结构体的列表进行排序并输出排序后的结果。在结构体排序的情况下使用了自定义的排序方法 devListSort该方法按照结构体的 uuid 成员进行升序排序。

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

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

相关文章

看手机的网站叫什么建筑公司经营范围大全

手机从开发出来到现在,已经换了很多代了,从大哥大,小灵通,到诺基亚到山寨机到苹果到华为,几十年过去了。手机从奢侈品一下飞去每个人手里,反正我手机有手机已经快10年了,所以我相信每个人对自己…

有关网站建设的知识招标网站大全

最近接触到一些新人,是真正的网络新人,慢慢理解了新人的困惑。 对于新人,每天获取的信息五花八门,这是好的也是极其不好的。因为他们不知道如何筛选,到底适不适合自己去做。 我一直在劝大家去做一些内容创造性的事情…

题解:P4779 【模板】单源最短路径(标准版)

题目传送门 算法分析 本题要求计算单源最短路径,并且边权非负,适合使用Dijkstra 算法。Dijkstra 算法是一种贪心算法,用于计算带权有向图或无向图中单个源节点到所有其他节点的最短路径。 为什么选择 Dijkstra 算法…

网关配置

sy //进入配置undo in en //关闭信息中心 in en //打开信息中心int g0/0/0 //进入接口 ip add xxx.xxx yyy.yyy//配置该接口的ip及子网掩码原本左右2个不是同网段的设备 无法联通 通过网关配置后 网关作为中间人联…

湖南服装网站建设创意做美食视频网站

文章目录 代码实现参考 代码实现 本文实现 ResNet原论文 Deep Residual Learning for Image Recognition 中的50层,101层和152层残差连接。 代码中使用基础残差块这个概念,这里的基础残差块指的是上图中红色矩形圈出的内容:从上到下分别使用…

北京微网站建设公司广州专业做继承案件律师

11月3日-5日,由中国开源软件推进联盟 PostgreSQL 分会主办的中国 PostgreSQL 数据库生态大会在北京中科院软件所隆重举行。大会以”极速进化融合新生”为主题,从线下会场和线上直播两种方式展开,邀请了数十位院士、教授、高管和社群专家&…

高频感应钎焊在制冷行业的应用与优势:高效、绿色、智能的焊接革命!

在追求“双碳”目标与智能制造的时代浪潮下,制冷行业正经历一场静悄悄的技术革命。其中,高频感应钎焊(High-Frequency Induction Brazing)作为一项先进连接工艺,正以其高效、安全、精准的特性,全面取代传统火焰钎…

题解:P12672 「LAOI-8」近期我们注意到有网站混淆视听

题目传送门 题目分析 本题要求我们判断对于给定的字符串,最少需要多少次字符交换操作,使得字符串中不存在同时包含 LGR 子串和 CSP 子串的情况。每次操作可以交换任意两个字符。 关键观察: 若字符串中不同时存在 LG…

详细介绍:基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战

详细介绍:基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

网站改版 优势php+mysql网站开发

需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)。 将两数相除,要求不使用乘法、除法和%运算符。 得到商和余数。 被除数 %除数商 ... 余数 #这里%代表除 //1、求商,就是求里…

网站模板后台手机免播看成片

docker迁移容器 将容器保存为镜像 docker commit container-id image-name将保存好的镜像打包(保存到/path文件夹) docker save image-name > /path/image-name.tar将打包好的镜像迁移到新服务器,新服务器执行如下命令 scp -P 22 username旧服务器IP地址:/旧服务…

完整教程:docker创建postgreSql带多个init的sql

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vscode的文心快码插件不错

vscode的文心快码插件不错vscode的文心快码插件不错

做网络营销如何建立自己的网站昆明建网站要多少钱

事件委托(事件代理) 将原本需要绑定在子元素上的事件监听器委托在父元素上,让父元素充当事件监听的职务。 事件委托是一种利用事件冒泡的特性,在父节点上响应事件,而不是在子节点上响应事件的技术。它能够改善性能&a…

EPU+VPU+WBUC+WAUC:AI元人文的硅基基石体系

EPU+VPU+WBUC+WAUC:AI元人文的硅基基石体系 这四大组件共同构成了一个完整的、支持价值感知、博弈、创造与分布式协同的硬件基础。它们之间的关系,并非简单的并列,而是一个有机的、分层协同的体系。 一、 核心组件定…

地下城做心悦任务的网站wordpress后台cookies

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 qrencode 是一个用于生成二维码的命令行工具。它可以将文本、URL、电话号码等信息转换为二维码图像。生成的二维码图像可以保存为图片文件,方便在电子文档、网页、移动应用等各种场景中使用。 它支持的二维…

自己有一个域名怎么做网站个人工作室装修风格

题目:77. 组合 参考链接:代码随想录 回溯法理论基础 回溯三部曲:回溯函数模板返回值以及参数、回溯函数终止条件、回溯搜索的遍历过程。 模板框架: void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&…

响水做网站需要多少钱企业网站建设规划ppt

开发条件:eclipsepydev插件django editor插件 关于eclipse安装小编就不多做介绍,我自己用的版本如下 1.安装pydev插件 启动Eclipse, 点击Help->Install New Software 弹出如下框 点击add 分别在 Name中填:Pydev, Location中填http://pydev.org/up…

加强网站微信公众号平台建设wordpress添加网易云音乐播放器

一、文件的属性 1. 权限详解 r 表示读权限————————————读取文件内容 w 表示写权限————————————编辑、新增、修改内容(非删除) x 代表执行权限———————————读取文件内容 — 表示没有该权限——————————读取文件内容 2. 权限对目录的重…

Educational Codeforces Round 183 (Rated for Div. 2)题解

Educational Codeforces Round 183 (Rated for Div. 2)题解Educational Codeforces Round 183 (Rated for Div. 2) 题解 A 直接提前分给三人,看看余下多少,然后用 3 去相减就行了。不过注意 3 的倍数的情况是 0。 #i…