C++ 将变量引用转换为值?
我正在使用C++ 将变量引用转换为值?,c++,debugging,C++,Debugging,我正在使用STL中的list。为了访问,我使用了l.front()或l.back()。这两种方法都返回引用。我正在将一个列表的内容复制到另一个列表中,因此不希望引用。由于方法返回引用,所以我想知道是否有其他方法可以将引用转换为值?我只会收到价值而不是参考 int main() { list<int> l; l.push_back(2); l.push_back(5); l.push_back(7); l.push_back(9);
STL
中的list
。为了访问,我使用了l.front()
或l.back()
。这两种方法都返回引用。我正在将一个列表的内容复制到另一个列表中,因此不希望引用。由于方法返回引用,所以我想知道是否有其他方法可以将引用转换为值?我只会收到价值而不是参考
int main()
{
list<int> l;
l.push_back(2);
l.push_back(5);
l.push_back(7);
l.push_back(9);
while( ! l.empty() )
{
cout<<l.front()<<endl;
l.pop_front();
}
list<int> l1;
l1.push_back(10);
l1.push_back(15);
l1.push_back(30);
l.push_back( l1.front() ); // here I need value not reference.
system("pause");
return 0;
}
intmain()
{
清单l;
l、 推回(2);
l、 推回(5);
l、 推回(7);
l、 推回(9);
而(!l.empty())
{
你确实会得到价值
l.push_back( l1.front() ); // here I need value not reference
因为l1.front()
引用的值将用于创建listl
的元素。
无需创建任何仅用于获取目标值的中间临时对象。:)
试试这个简单的例子
#include <iostream>
#include <list>
#include <cstdlib>
int main()
{
std::list<int> l;
std::list<int> l1;
l1.push_back( 10 );
l1.push_back( 15 );
l1.push_back( 30 );
l.push_back( l1.front() );
for ( int x : l1 ) std::cout << x << ' ';
std::cout << std::endl;
for ( int x : l ) std::cout << x << ' ';
std::cout << std::endl;
std::system( "pause" );
return 0;
}
#包括
#包括
#包括
int main()
{
std::列表l;
std::列表l1;
l1.推回(10);
l1.推回(15);
l1.推回(30);
l、 向后推(l1.前());
对于(intx:l1)std::cout请看一看。有两个版本采用不同的输入参数:
const T&value
:新元素初始化为value的副本
T&&value
:值被移动到新元素中
在您的例子中,l1.front()
是一个左值引用T&
,因此选择版本1并复制该值,这是您想要的。您是否运行或调试了它以查看结果?您收到了一个引用,但push\u back
函数正好采用了它,所以没有问题。是的。listl
现在只有10个。@faranwath but push\u back()也会删除所有以前推送的整数。为什么会这样?@user3461957您刚才不是pop\u front
ed了它们吗?