pair.first是否返回对第一个值的引用
Does pair.first return a reference to the first value?
在C++标准库中,有一个名为pair的对象。Pair.first和Pair.second分别返回Pair对象的第一个和第二个值。我想在条件下将第一个值增加一(我的对是一对)。当我尝试这样做时,它抛出了"需要1个值"。这可能是因为在这一过程中,我没有通过引用传递值,但也可能是因为.first不会通过引用返回对的第一个值。有人知道吗?
first
不是函数,它本身是对象,是struct pair
的数据成员。对象的名称是一个左值,相当于一个引用。
"Lvalue"是一个语言术语,表示可以放在赋值左侧的东西,即可以给它赋值,或者它在内存中有一个有意义的地址。
条件表达式的结果是一个左值,如果它的两个替代项都是相同类型的左值。
例如,
pair< int, int > p;
flag? p.first : p.second = 34; // ok
flag? p.first : 3 = 15; // error: 3 is not an lvalue; 3 = 15 is nonsense
pair< int, short > q;
flag? q.first : q.second = 12; // error: different types
注意,"左值"的对立面是"右值",表示赋值的右侧。这些术语是从C语言中借来的。
记住:表达式的左值是它存储的地方,右值是它的内容。其中哪一个表达式有意义地决定了其值类别。
首先,我认为您所读的"需要1-值"实际上是"需要左值"(L-值),在C++中,它是一个(直观地)表示实际对象而不是值的表达式。
接下来,pair.first
和pair.second
不产生对pair.first
和pair.second
的引用,而是是pair
内部的first
和second
数据成员。您可以获得对它们的引用,但它们本身不是引用。
但是,如果没有看到实际的代码,我就无法提供任何更有针对性的建议。
希望这能有所帮助!
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 使用 scope 运算符 (::) 引用另一个文件中的类
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- C++:如何使用传递引用在一个方法中返回多个值
- OpenGL:第二个VBO破坏了第一个VBO
- 引用另一个文件夹中的.dll
- 为什么第一个Dynamic_cast没有投射到基类?
- 是否可以在引用另一个派生类的派生类中声明复制构造函数?
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 在我的第一个C++程序中需要一些帮助(简单)
- 第一个CppUnit测试:对CppUnit::SourceLine::SourceLine的未定义引用