【问题标题】:STL stack with elements of array带有数组元素的 STL 堆栈
【发布时间】:2015-03-26 12:11:42
【问题描述】:

我是 C++ 新手。我想用数组创建一个堆栈。我正在使用 STL。我需要将两个值存储在一个数组中,然后推送/弹出到堆栈 在python中我会简单地做:

s = Stack()
s.push((1,"item"))
s.push((3,"item"))

所以堆栈中会有两个元组 (1,"item"), (3,"item)

我在 c++ 中尝试过这样的事情,但它错了:

stack<string, list<string> > exampleStack;
string test[2] = {"wtf","lol"};
exampleStack.push(dd);

【问题讨论】:

  • 您需要将总是 2 个项目或 n 个项目的元素推入堆栈?

标签: c++ data-structures stl stack


【解决方案1】:

由于您只想存储不同数据类型的两个值,您可以使用std::pair

  1. 创建stack&lt;pair&lt;int,string&gt; &gt;
  2. 要将pair&lt;int,string&gt; 压入堆栈,请使用push() 函数和make_pair 函数为push() 函数配对。

代码:

stack<pair<int,string> > s;
s.push(make_pair(1,string("item")));
s.push(make_pair(3,string("item")));

编辑:(感谢@imlyc)

如果使用g++编译时启用-std=c++11标志,可以替换

s.push(make_pair(1,string("item")));

s.push({1,"item"});

【讨论】:

  • 或者直接使用s.push({1, "abc"});
【解决方案2】:
stack<list<string> > exampleStack;

list<string> l1 = list<string>;
l1.push_back("aaa");
l1.push_back("bbb");
exampleStack.push(l1);

list<string> l2 = list<string>;
l2.push_back("ddddd");
l2.push_back("eeeee");
exampleStack.push(l2);

【讨论】:

    猜你喜欢
    • 2016-07-03
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2021-12-20
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多