C++ 实现堆栈的泛型集合

C++ 实现堆栈的泛型集合,c++,pointers,stack,C++,Pointers,Stack,在创建堆栈时指定数据类型时,我遇到了两种不同的实现 stack<string>* stringStack = new Stack<string>(); Stack<string> stringStack = new Stack<string>(); 指针对堆栈做什么 例如,我的教授向我们提供了代码: stack<std::string>* stringStack = new Stack<std::string>();

在创建堆栈时指定数据类型时,我遇到了两种不同的实现

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(); 
Stack<string> stringStack = new Stack<string>();
stringStack.push(17);        
int a = stringStack.pop();
我不知道有什么区别。 如果有人能向我解释两者的区别,如果有或没有,那就太好了

当我在网上搜索解决方案时

这就是你的问题所在。不要在互联网上搜索和复制/粘贴你不懂的代码。那是你毕业后的事

我找到密码了

Stack<string> stringStack = new Stack<string>();
stringStack.push(17);        
int a = stringStack.pop(); 
Stack<string> stringStack = new Stack<string>();
stringStack.push(17);        
int a = stringStack.pop();
这里讨论了是否应该动态分配某些内容的问题,您可能会在其中发现一些有价值的内容:

但是,如果你的教授真的教了现代C++,那么你会被警告不要使用原始指针:


我要重申,你能为自己做的最好的事情就是不要试图通过在互联网上搜索解决方案来走捷径。从一开始就关注你的课程,如果你觉得你的课程或教授不足,那么可以通过自己的努力来补充你的教育。

你的代码在几个方面仍然是错误的。C++是区分大小写的。在类型和变量之间还有一个额外的字符串。即使修复了,第二个示例仍然是错误的,因为您不会使用新的。我现在和@FrançoisAndrieux一起讨论这个问题。我不知道你想要什么,因为代码太错了。新的编辑是否更清晰@drescherjmStack stringStack=新堆栈;可能是非法的。stack*stringStack=新堆栈;你把一堆一堆地混在一起。C++将认识到这2种不同的事物,因为语言是区分大小写的。除了这些错误,你知道这两个区别是什么,有没有星号?它们是否用于不同的场景@德累斯彻姆