非常简单的任务,但我有一些错误,我不明白。任务是创建一个函数,它将从列表中返回队列(使用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
发布于 2020-11-09 17:52:32
data
是const 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;
}
https://stackoverflow.com/questions/64756478
复制相似问题