从列表 C++ 创建队列

Create Queue from List C++

非常简单的任务,但我有一些错误,我不明白。任务是创建一个函数,它将return从列表中排队(使用STL)

代码:

#include <iostream>
#include <list>
#include <queue>
using namespace std;

queue<int> reverse(const list<int>& data) noexcept {
    queue <int> Queue;
    for (list<int>::reverse_iterator i = data.rbegin(); i != data.rend(); i++) {
        Queue.push(*i);
    }
    return Queue; 
}

错误:

1>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\VC\Tools\MSVC.24.28314\include\xutility(1746,1): error C2664: 'std::_List_iterator<std::_List_val<std::_List_simple_types<_Ty>>>::_List_iterator(const std::_List_iterator<std::_List_val<std::_List_simple_types<_Ty>>> &)': cannot convert argument 1 from '_BidIt' to 'std::_List_iterator<std::_List_val<std::_List_simple_types<_Ty>>> &&'

1>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\VC\Tools\MSVC.24.28314\include\xutility(1746,96): message: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

dataconst list<int>&。你应该使用 const_reverse_iterator.

queue<int> reverse(const list<int>& data) noexcept
{
    queue <int> Queue;
    for (list<int>::const_reverse_iterator i = data.crbegin(); i != data.crend(); i++)
    {
        Queue.push(*i);
    }
    return Queue; 
}