【问题标题】:Create Queue from List C++从列表 C++ 创建队列
【发布时间】:2021-02-21 15:47:26
【问题描述】:

相当简单的任务,但我有一些错误,我不明白。任务是创建一个函数,该函数将从列表返回队列(使用 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 Studio\2019\Professional\VC\Tools\MSVC\14.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 Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include\xutility(1746,96): message: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

【问题讨论】:

    标签: c++ list stl queue


    【解决方案1】:

    dataconst list&lt;int&gt;&amp;。你应该使用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; 
    }
    

    【讨论】:

    • 谢谢。不知道,那个 const_reverse_iterator 竟然存在
    • @RomaRoik 现在你知道了:)
    猜你喜欢
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2020-04-19
    • 2013-12-21
    相关资源
    最近更新 更多