【问题标题】:Push String in Stack?将字符串推入堆栈?
【发布时间】:2011-04-22 19:39:29
【问题描述】:

我正在使用 C++,我想将字符串推送到堆栈中,例如将 int 推送到堆栈中。

举例

3."stackoverflow"
2."is"
1."Best"
0."site"

我想在堆栈的每个索引处推送一个字符串。我该怎么做?

【问题讨论】:

  • 你已经尝试过了吗?如果是这样,您也可以发布吗?
  • “堆栈的每个索引”并没有真正的意义。堆栈没有被索引;您只能访问最顶层的元素。但是,有像 vector 这样的索引容器,它们具有类似堆栈的推送/弹出语义。
  • 这里有些误会。我想将字符串推入堆栈。就像按整数一样。推(“你好”);推(“世界”);

标签: c++ stl stack


【解决方案1】:

以 STL 为例:

#include <stack>

std::stack<std::string> s;
s.push("A");
s.push("B");
s.push("C");
s.push("D");

查看STL reference了解更多信息。

【讨论】:

    【解决方案2】:

    完全同意 Ton van den Heuvel 的观点,但你说的是

    "在我想要的堆栈的每个索引处 推一个字符串"

    “在每个索引处”是什么意思?您应该知道,一旦字符串在堆栈中,您只能访问顶部字符串,并且无法通过堆栈中的索引访问。如果这是您需要的,请改用 std::vector 。

    【讨论】:

    • 如果 cplusplus.com 正确(cplusplus.com/reference/stl/stack),则std::stack的默认底层类型是std::deque,而不是std::vector。无论如何 +1,但你应该纠正它。
    • @Matteo:抱歉,搞错了,vector 是 priority_queue 的默认值...编辑
    【解决方案3】:

    我做到了。我之前看到了如何将字符串转换为字符数组并将其混合到我现在正在学习的内容中,即。堆栈。

    stack <int> Name;
    name="mohit";
    for(char c:name)
     Name.push(c);
    for(char c:name){
    cout<<Name.top();
     Name.pop();}
    

    输出是 tihom 它的功能很简单。它将字符串转换为字符数组,然后逐个字符地推送字符串。弹出我们使用相同的循环,它使用 LIFO 原则弹出。

    【讨论】:

      猜你喜欢
      • 2018-12-30
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      相关资源
      最近更新 更多