将项目从列表移动到堆栈或队列
Moving items from List to either a Stack or Queue
我正在添加字符串,如B1, P4, B4 B2, P6 ..等等。我试图将项目从列表移动到堆栈或队列,直到列表为空。因此,如果项目字母是P,我将其存储在队列中(后或前无关紧要)。如果字母是B,那么我将它存储在一个堆栈中。我试着像这样实现它,但我得到这个错误:
Boxesmain.cpp||In function 'int main()':|
Boxesmain.cpp|54|error: no matching function for call to 'std::queue<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::deque<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::|
c:program files (x86)codeblocksmingwbin..libgccmingw324.4.1includec++bitsstl_queue.h|218|note: candidates are: void std::queue<_Tp, _Sequence>::push(const typename _Sequence::value_type&) [with _Tp = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, _Sequence = std::deque<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::list<std::b|
Boxesmain.cpp|56|error: no matching function for call to 'std::stack<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::deque<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::|
c:program files (x86)codeblocksmingwbin..libgccmingw324.4.1includec++bitsstl_stack.h|182|note: candidates are: void std::stack<_Tp, _Sequence>::push(const typename _Sequence::value_type&) [with _Tp = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, _Sequence = std::deque<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::list<std::b|
如有任何建议,我将不胜感激。
我有:
#include <iostream> using namespace std; #include <list> #include <queue> #include <stack> template <typename T> // prototype for client function void print(list<T> &); int main() { list<string> lst; queue< list<string> > package; stack< list<string> > box; string choice, str; string::size_type pos, start_position=0; bool choice_flag = true; do{ cin >> choice; if(choice == "QUIT"){ choice_flag = false; break; } else{ lst.push_back(choice); } }while(choice_flag); cout << "the size of the list is " << lst.size() << endl; if (lst.empty() == true) cout << "the list is empty" << endl << endl; else cout << "the list is not empty" << endl << endl; print(lst); // attempt to move from list lst and push onto queue or stack while(!lst.empty()){ str = lst.front(); if(str.find('P' ,0)) package.push(str); else box.push(str); } return 0; }
如果你想要一个队列和堆栈的字符串更改:
queue< list<string> > package;
stack< list<string> > box;
:
queue< string > package;
stack< string > box;
相关文章:
- 堆栈和队列是否像C++中的数组一样传递?
- 了解使用堆栈实现队列的递归调用机制
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 嵌套容器:为什么我无法访问堆栈队列顶部的堆栈?C++
- 堆栈和队列的C++默认实现
- 前缀表示法 C++,分段错误(堆栈和队列)
- 将元素从队列复制到堆栈
- 具有父类和虚拟函数的堆栈和队列
- 在C++中使用队列和堆栈对 2 个向量进行加减
- 在堆或堆栈上分配的 std::队列的内存
- 使用提升库在队列和堆栈数据结构上保存和加载数据时出错
- 尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白
- 堆栈,队列延迟
- 将双重链接列表与C 中的堆栈和队列类链接
- 堆栈和队列在 Dev-C++ 中给出错误
- 根据堆栈类实现队列类的复制构造函数
- 过度填充堆栈和队列容量(C )
- 堆栈/队列 C++ 中的内存泄漏
- 使用C++堆栈/队列分析XML文件
- 什么是堆栈?arrayStack ?arrayQueue ?堆栈队列 ?它们在C++上有何不同