C++ 无法理解如何在c++;stl工作?

C++ 无法理解如何在c++;stl工作?,c++,stl,C++,Stl,在阅读Topcoder的教程时,我遇到了一个声明 对第一个和第二个元素进行比较。如果第一个元素不相等,则结果将仅基于第一个元素的比较;只有当第一个元素相等时,才会比较第二个元素 我不明白这句话想说什么?假设您有一个按字母顺序排序的人名列表。还假设每个名字都只有名和姓 你会怎么分类 你只需比较名字,直到它们完全匹配。当名字相同时,检查第二个名字 假设您有要按字母顺序排序的人名列表。还假设每个名字都只有名和姓 你会怎么分类 你只需比较名字,直到它们完全匹配。当名字相同时,检查第二个名字 考虑成对的s

在阅读Topcoder的教程时,我遇到了一个声明

对第一个和第二个元素进行比较。如果第一个元素不相等,则结果将仅基于第一个元素的比较;只有当第一个元素相等时,才会比较第二个元素


我不明白这句话想说什么?

假设您有一个按字母顺序排序的人名列表。还假设每个名字都只有

你会怎么分类


你只需比较名字,直到它们完全匹配。当名字相同时,检查第二个名字

假设您有要按字母顺序排序的人名列表。还假设每个名字都只有

你会怎么分类


你只需比较名字,直到它们完全匹配。当名字相同时,检查第二个名字

考虑成对的
std::pair


考虑成对的
std::pair


它的意思是

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
If子表达式

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
等于
flase
然后是子表达式

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
不会计算,因为整个表达式将等于
false

这是对的比较,对应于逻辑和运算符的评价,根据C++标准评估以下方式

1从左到右依次为&&运算符组。操作数都是 上下文转换为bool(第4条)。如果两者都存在,则结果为真 否则,操作数为true和false。与&、&&担保不同 从左到右求值:如果 第一个操作数为false。


它的意思是

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
If子表达式

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
等于
flase
然后是子表达式

( p1.first == p2.first ) && ( p1.second == p2.second )
( p1.first == p2.first ) 
( p1.second == p2.second )
不会计算,因为整个表达式将等于
false

这是对的比较,对应于逻辑和运算符的评价,根据C++标准评估以下方式

1从左到右依次为&&运算符组。操作数都是 上下文转换为bool(第4条)。如果两者都存在,则结果为真 否则,操作数为true和false。与&、&&担保不同 从左到右求值:如果 第一个操作数为false。


它们是按字典顺序进行比较的。字典顺序:意味着它们就像电话簿中的名字一样进行比较。如果你想一想十进制数字是如何进行比较的,最重要的数字总是优先于所有意义较小的数字。因此,除非两个数字之间的数百列相等,否则你甚至不用看十或单位。但如果数百列相等,则检查十列。使用
std::pair
时,您只有两个“列”:
std::pair::first
std::pair::second
。除非第一列(
std::pair::first
)相等,否则无需检查第二列(
std::pair::second
).它们是按字典顺序进行比较的。按字典顺序:意味着它们的比较就像电话簿中的名字一样。如果你想一想十进制数字是如何进行比较的,最重要的数字总是优先于所有意义较小的数字。因此,除非两个数字之间的数百列相等,否则你甚至不用看十或单位。但如果数百列相等,则检查十列。使用
std::pair
时,您只有两个“列”:
std::pair::first
std::pair::second
。除非第一列(
std::pair::first
)相等,否则无需麻烦检查第二列(
std::pair::second
)。大多数姓名列表(在美国?)先按姓氏排序,然后按姓氏排序,这与pair先比较后比较最末姓名列表不同(在美国?)先按姓氏排序,然后按姓氏排序,这不像一对先比较后比较