我正在使用 STL
中的 list
。为了访问,我使用了 l.front()
或 l.back()
。这两种方法都返回引用。我正在将一个列表的内容复制到另一个列表中,因此不需要引用。由于这些方法正在返回引用,所以我想知道是否有其他方法可以将引用转换为值?我只会收到值(value)而不是引用。
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;
}
最佳答案
你确实会得到值(value)
l.push_back( l1.front() ); // here I need value not reference
因为 l1.front()
引用的值将用于创建列表 l
的元素。
无需创建任何仅用于获取目标值的中间临时对象。:)
试试这个简单的例子
#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;
}
正如您将看到的,每个列表都包含其自己的值为 10 的元素。
关于c++ - 将变量引用转换为值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671023/