【问题标题】:How to insert from QUEUE to 2D LIST如何从 QUEUE 插入 2D LIST
【发布时间】:2020-09-06 13:43:38
【问题描述】:

我有一个非常基本的问题。如何从 QUEUE 推送到 LIST。我几乎从队列复制到列表。这是我的例子:

list<list<BoardingTicket>> boardPassenger(queue<BoardingTicket>& waitingLine){
     list< list<BoardingTicket>> combinedList;
     while(!waitingLine.empty()){
          combinedList.push_back(waitingLine.front()); 
          waitingLine.pop();
     }

     return combinedList;
}

这是更简单的方法还是我需要用迭代器来做。

提前致谢!

编辑:第 4 行 (combinedList.push_back(waitingLine.front());) 不起作用!

【问题讨论】:

  • 你不能遍历队列,所以这不是一个选项..
  • 为什么要使用列表列表?你不只是想要list&lt;BoardingTicket&gt;吗?
  • @Blastfurnace 就是这样,因为剩下的任务。而且我只能更改函数的内部结构。因为在我希望完成后,这将通过自动化测试。
  • 一个list&lt;list&lt;foo&gt;&gt;是一个二维数据结构。您需要决定队列元素的去向。你希望每一个都在自己的列表中吗?另一个列表中的一个长列表?从你的问题看不清楚。

标签: c++ list stl queue


【解决方案1】:

如果你想在std::queue&lt;T&gt; 上使用迭代器,这是不可能的。它们没有迭代器。

如果你想使用列表的迭代器,但我认为push_back() 更容易更清晰。

使用下面的

list<list<BoardingTicket>> boardPassenger(queue<BoardingTicket>& waitingLine){
     list<BoardingTicket> combinedList;
     while(!waitingLine.empty()){
          combinedList.insert(combinedList.begin(), waitingLine.front());
          waitingLine.pop();
     }

     return list<list<BoardingTicket>>{std::move(combinedList)};//#include<utility>
}

【讨论】:

  • std::queue 没有任何迭代器。
  • 现在错误提示:插入:无法将参数 2 从 '_Ty' 转换为 '_Ty &&'
  • 我认为插入有问题。它基本上说我没有足够的参数来插入
  • @asmmo 仍然存在 .insert() 问题
  • 错误(活动)E0304 没有重载函数实例“std::list<_ty _alloc>::insert [with _Ty=std::list> , _Alloc=std::allocator<:list std::allocator>>>]" 匹配参数列表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多