c++ - 将变量引用转换为值?

标签 c++ debugging

我正在使用 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/

相关文章:

c++ - 当行为可以不同时,模板如何复制动态多态性?

c++ - C++内存管理错误

php - PHP解析/语法错误;以及如何解决它们

java - 使用杂耍算法进行数组旋转失败

debugging - 如何在 IntelliJ 中调试时修改列表值

debugging - 调试时共享内存问题

c++ - 在 O(n) 时间内从容器中移除 <number> 个元素

c++ - 这种阻塞队列的实现安全吗?

c++ - 使用 C++ 将整数 vector 写入二进制文件的更快方法?

debugging - 在 python 中调试 maxmatch 算法时遇到问题