std::vector 和 std::map 都支持以下比较运算符

news/2024/9/23 12:09:38/文章来源:https://www.cnblogs.com/niumachen/p/18426829

在 C++ 标准库中,std::vectorstd::map 都支持以下比较运算符:

  • ==(相等运算符)
  • !=(不等运算符)
  • <(小于运算符)
  • <=(小于等于运算符)
  • >(大于运算符)
  • >=(大于等于运算符)

1. std::vector 的比较

对于 std::vector,这些运算符通过词典序比较(lexicographical comparison)进行。词典序比较类似于字符串的字母顺序,比较规则如下:

  • vector 的头开始,依次比较每个元素。
  • 如果两个向量的元素都相等,则继续比较下一个元素。
  • 如果找到了一个不相等的元素,直接根据这个元素的大小来决定结果。
  • 如果比较到最后所有的元素都相等,但一个向量比另一个短,那么较短的向量视为“更小”。

例子:

#include <iostream>
#include <vector>int main() {std::vector<int> v1 = {1, 2, 3};std::vector<int> v2 = {1, 2, 4};if (v1 < v2) {std::cout << "v1 < v2" << std::endl;  // 会输出,因为 3 < 4}if (v1 != v2) {std::cout << "v1 != v2" << std::endl; // 会输出,因为第3个元素不同}return 0;
}

2. std::map 的比较

std::map 也是按词典序进行比较的,但它的比较基于键值对的顺序,而不是单独的键或值。std::map 是按照键进行排序的,因此比较时也遵循键的顺序,比较规则如下:

  • 首先按键进行比较,比较每个键是否相等。
  • 如果键相等,则进一步比较键对应的值。
  • 如果找到一个不相等的键,或一个相等的键其值不相等,直接根据这个结果返回比较值。
  • 如果所有键值对都相等,则视为相等。

例子:

#include <iostream>
#include <map>int main() {std::map<int, std::string> map1 = {{1, "apple"}, {2, "banana"}};std::map<int, std::string> map2 = {{1, "apple"}, {2, "carrot"}};if (map1 < map2) {std::cout << "map1 < map2" << std::endl;  // 会输出,因为 "banana" < "carrot"}if (map1 != map2) {std::cout << "map1 != map2" << std::endl; // 会输出,因为键 2 对应的值不同}return 0;
}

3. 比较运算符的适用条件

  • std::vectorstd::map 的比较运算符依赖于容器中元素或键、值的类型。如果元素或键、值的类型支持这些比较运算符,那么 std::vectorstd::map 的比较运算符就可以工作。例如,如果 std::vector 中的元素类型是用户自定义的类型,且这个类型没有定义比较运算符,编译器就会报错。

4. 小结

  • std::vectorstd::map 都支持 <, >, <=, >=, ==, != 这些比较运算符,并且都是按词典序进行比较。
  • 这些运算符的前提是,存储在 vectormap 中的类型(如元素、键和值)支持相应的比较运算符。

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

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

相关文章

2024ICPC网络赛第二场题解(部分)

2024ICPC网络赛第二场题解前言 这场相对作用大一点,最后顶着队友的怀疑压力乱搞出了C,但是后面看题解发现似乎是数据弱了跑过去,其实复杂度是队友分析的那样,是不正确的,但是毕竟是打名额的比赛,过了就是过了,这里分享一下C题的乱搞做法,以及其他题的我们队赛时代码。下…

20240814

Sternhalma 我们给格子编个号,然后暴力打表出一个格子可以走到哪些点,然后状压 \(dp\),从全 \(1\) 的情况开始倒推,每次查询将其转化为二进制数列即可 #include <bits/stdc++.h>using namespace std;using pii = pair<int, int>;const int N = 21, M = (1 <<…

学习vue——自定义指令

一、局部自定义指令二、全局注册自定义指令 三、总结

如何让带参数变量的mysql查询走索引?

1,问题的提出 mysql 5.7的数据库,jx_performance表含索引idx_performance。该索引关联两个字段:`date`, `user_id`。 在运行sql语句时发现,如果where条件采用参数变量,则查询不走索引。图1,带参数变量查询图2,采用字符串常数查询上图1和图2,实际上查询条件一样,因为查…

大发明家

(彩蛋:大样例是从数据里扒的,且没有绑点)。 由于组题人电脑坏了,所以只能写简略题解了(其实是组题人的口胡碎碎念),写的不清晰的和部分分可以听讲题(可能有一些地方我下意识省略了,可以来问我). 首先,生成到完美的时间线的概率是固定的,如果我们假设概率为 \[p = \frac{|完…

acme+cloudflare生成免费证书(自动续期)

acme DNSapi acme DNSapi的作用是在申请证书时使用dns交易,acme可以通过dnsapi在对应的dns管理平台提交对应的dns记录。玩过证书的朋友都知道,证书申请时有三种验证方式邮箱验证:需要邮箱与域名绑定(细节要求我没试过) 文件验证:文件验证时证书管理方会要求你在服务器的指…

pip install volcengine-python-sdk[ark]

解决方案: 需要修改注册表的变量 https://github.com/volcengine/volcengine-python-sdk/issues/5

2024年9月23日 人工智能作业

主题为校园科技节之航天主题,运用了亿图图示中天文学的符号素材进行构图,添加了星球,飞船,宇航员,天文望远镜等航天常见元素构成了太空的场景,并添加了“校园科技节”的文本点明主题,以最简约的形式表达了海报的含义

python面试题

python是什么?Python是一种开放原始码、直译式、可携式、面向对象的程序语言,具有模块、多线程、异常处理以及自动内存管理功能。广泛应用包括Web开发(如Django和Flask框架)、数据科学(如Pandas和NumPy库)、机器学习(如TensorFlow和PyTorch框架)、自动化脚本、科学计算…

基于gin的web开发脚手架模版

一、web开发模式 1.传统的MVC模式:这个模式不太适合大型的web应用。 2.CLD模式链接:https://github.com/Ruan0423/gin-web-Framework 二、目录结构 --web_app-controller-logic-dao-mysql-redis-models-pkg-settingssettings.go-routersrouter.gomain.gogo.modgo.sumconfig.y…

OpenAI o1模型揭秘:通过LLMs学习推理能力

OpenAI推出了o1,这是一种通过强化学习训练的大型语言模型,专门用于进行复杂的推理任务。o1在回答问题之前会“思考”,能够在响应用户之前生成一条长的内部思维链。 在编程竞赛问题(Codeforces)中,OpenAI o1的排名在89%分位,位列美国数学奥林匹克预选赛(AIME)前500名学…

网站数据库为什么连接失败

网站数据库连接失败可能有以下几个常见原因:数据库配置错误:数据库连接参数配置错误,如用户名、密码、主机地址、端口号、数据库名称等配置不正确。 应用程序中的数据库配置文件(如WordPress中的wp-config.php)可能包含了错误的信息。网络问题:数据库服务器与应用程序服务…