C++中vector<int>类型的ans>path比较操作含义是什么?
C++中vector的>比较运算符详解
你看到的这段代码里,ans>path并不是比较两个vector的长度,而是C++标准库对vector类型默认的字典序比较,规则如下:
- 从两个vector的第一个元素开始,按顺序逐个对比对应位置的元素,直到找到第一对不相等的元素:哪个元素更大,对应的vector就更大
- 如果两个vector前面所有元素都完全相等,再比较它们的长度:长度更长的vector更大
举几个实际例子帮你理解:
- 比如
vector<int> a = {1,3}; vector<int> b = {1,2},因为第二个元素3>2,所以a>b结果为真 - 比如
vector<int> a = {1,2}; vector<int> b = {1,2,3},前面元素都相等,但a的长度更短,所以a>b结果为假 - 比如
vector<int> a = {2}; vector<int> b = {1,3},第一个元素2>1,所以a>b结果为真,不会再考虑b的长度更长
回到你代码里的逻辑:if (!ans.size() || ans>path) ans=path;,这句话的作用是——如果ans是空的,或者当前ans的字典序比path大,就把path赋值给ans。最终ans会存储所有遍历过程中字典序最小的那个vector。
内容的提问来源于stack exchange,提问作者user14548558
相关产品推荐
相关产品推荐

