|
|
1
5
当谈到你关于成对向量的列表初始化的问题时,你注意到这里的不同行为真的很酷。 你的前两个例子很到位。在第一种情况下,您使用std::make_pair显式地创建对,这是在C++11之前创建对对象的标准方法,而且它仍然非常好地工作:
在第二种情况下,您将使用C++11中引入的统一初始化,这也是完全有效的,而且更简洁:
现在,对于棘手的部分!第三个例子有点明白。您使用的是圆括号()而不是大括号{},并且在圆括号内,您有用逗号分隔的表达式:
在C++中,当用这样的逗号分隔表达式时,实际上是在使用逗号运算符,该运算符计算其两个操作数并返回第二个操作数的结果。因此(0,1)的计算结果为1,(0,-1)的计算值为-1。你实际上想在这里做的是这样的事情:
但这不是你想要的,因为vpairs_third应该是一个成对的向量,而不是int。所以编译器会混淆,并给你一个错误,因为你试图用int初始化一个向量对。 坚持使用大括号{}进行列表初始化,以避免逗号运算符混淆,您将获得金牌。继续尝试C++,这是学习语言来龙去脉的好方法! |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |