C++ STL 关系运算符如何比较堆栈
How do the C++ STL relational operators compare stacks?
假设我有两个堆栈:
stack<int> s1, s2;
然后我在它们中推送一些值:
s1.push(2);
s1.push(4);
s1.push(5);
s2.push(1);
s2.push(2);
s2.push(10);
当我像这样比较它们时bool isEqual = (s1 > s2);
它会产生True
.但是为什么?并非所有 s1 的元素都大于相应的 s2 元素,也不是所有元素的总和都大于 s2。STL数据结构之间的确切比较方法是什么?
附言我想这也适用于队列、deques、列表。
如果您阅读operator>
的文档,它说
按字典顺序比较堆栈中的值
因此,他们将比较第一个元素,如果这些元素与第二个元素相等,依此类推。
您可以在此处阅读有关词典比较的更多信息。
词典比较是具有以下属性的操作:
- 逐个元素比较两个范围。
- 第一个不匹配元素定义哪个范围在字典顺序上小于或大于另一个范围。
- 如果一个范围是另一个范围的前缀,则较短的范围在字典顺序上小于另一个范围。
- 如果两个范围具有等效的元素并且长度相同,则范围在字典顺序上相等。
空区域在- 字典顺序上小于任何非空区域。
- 两个空范围在字典顺序上相等。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- 如果堆栈在数字较低的地址增长,为什么指针比较会逆转这种情况?
- 比较堆栈数据结构 c++
- 比较堆栈
- 启用优化时的堆栈指针比较异常
- C 比较共享指针的堆栈
- C++ STL 关系运算符如何比较堆栈
- 堆栈的重载比较运算符
- 比较双精度堆栈导致Always Equal
- 确保使用双比较和交换指令,为无锁堆栈
- 比较队列和堆栈的内容