【发布时间】:2019-02-21 21:21:49
【问题描述】:
在创建堆栈时指定数据类型时,我遇到了两种不同的实现。
stack<string>* stringStack = new Stack<string>();
Stack<string> stringStack = new Stack<string>();
指针指向堆栈有什么作用?
例如,我的教授给我们提供了代码:
stack<std::string>* stringStack = new Stack<std::string>();
stringStack->push(“Jim”);
std::string top = stringStack->peek();
std::cout << top << “ is at the top of the stack \n”;
这里,我的教授使用了第一个场景。
我在网上搜索解决方案时,找到了代码
Stack<string> stringStack = new Stack<string>();
stringStack.push(17);
int a = stringStack.pop();
我很困惑有什么区别。 如果有人可以向我解释有什么区别,如果有或没有,那就太好了!
【问题讨论】:
-
你的代码在几个方面仍然是错误的。
c++区分大小写。此外,在类型和变量之间还有一个额外的string。即使已修复,第二个示例仍然是错误的,因为您不会使用 new。我现在和@FrançoisAndrieux 一起讨论这个问题。我不确定你想要什么,因为代码太错误了。 -
新的编辑更清晰了吗? @drescherjm
-
Stack<string> stringStack = new Stack<string>();可能是非法的。 -
stack<std::string>* stringStack = new Stack<std::string>();你正在混合stack<std::string>和Stack<std::string>()。c++会将它们识别为两种不同的事物,因为语言区分大小写。 -
除了这些错误之外,您知道带星号和不带星号的两个区别是什么吗?它们是否用于不同的场景? @drescherjm