【问题标题】:Using double references in c++ [closed]在 C++ 中使用双重引用 [关闭]
【发布时间】:2015-10-18 11:20:50
【问题描述】:

我在 C++ 中使用列表工作,我碰巧需要使用双重引用。 我需要一个列表(在 main() 中定义)供另一个函数调用的函数使用,但我无法让它工作。 我附上一段代码作为例子。

谁能帮帮我?

提前致谢,

爱德华多

 #include <iostream>
    #include <list>

    using namespace std;

    void aux(list<int>&);
    void aux_(list<int>&); //?

    main()
    {
        list <int> lista;
        aux(lista);
    }

    void aux(list<int>& li)
    {
        aux_(li); //?
    }

void aux_(list<int>&lis) //?
{
    list <int>::const_iterator it;
    while(it!=lis.end())
    {
        cout<<*it<<" ";
        it++;
    }
}

【问题讨论】:

  • 有什么问题?
  • 在编译器中启用警告 - 您的迭代器 it 未初始化。
  • 你对“双重引用”的定义是什么?
  • 我投票结束。该问题是由一个简单的错误引起的,与引用无关,“双”与否。
  • 我认为它指的是转发两次参考参数这不是问题,一般来说“修复我的代码”问题在这里不是合适的问题,答案已经遍布十几个类似的问题.但是,这是您的第一个问题,所以我现在将跳过该问题,不要忘记接受我的回答(如果可以解决您的问题)并欢迎使用 Stackoverflow。

标签: c++ list pass-by-reference


【解决方案1】:

问题是你没有初始化迭代器,你应该这样做

list <int>::const_iterator it = lis.begin();

正如你现在看到的the code is working

【讨论】:

  • 你说的很对,我还以为跟双&&或者&*有关系,不过没必要,谢谢!
【解决方案2】:

您可以使用迭代器,是的,或者您可以使用更简单的基于范围的for自 C++11 起

void aux_(const list<int>& lis)
{
    for(int i : lis) // "for each int in lis, do the following:"
    {
        cout << i << " ";
    }
}

另外作为一个好的做法,将lis 传递为const,因为您没有修改它。

【讨论】:

  • 我没有被教过这种方法,谢谢!
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 2016-10-07
  • 2013-03-24
  • 2013-03-30
相关资源
最近更新 更多