从列表 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
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;
}
非常简单的任务,但我有一些错误,我不明白。任务是创建一个函数,它将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
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;
}