"std::stack": 使用类 模板 需要 模板 参数列表,求高手指点

代码如下:#include"stdafx.h"#include"iostream"#include"stack"usingnamespacestd;int_tmain(i... 代码如下:

#include "stdafx.h"
#include "iostream"
#include "stack"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int count=0;
int n;
cout<<"请输入一个数";
cin>>n;
stack fig=new stack();
int *a=new int[n];
a[0]=1;
a[1]=1;
for(int i=0;i<n;i++){
fig.push(a[n-1],fig);
}
for(int j=0;j<n;j++){
count=count+fig.top();
fig.pop(fig);}

return count;
}
展开
 我来答
besthelp
2013-10-06 · TA获得超过1057个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:389万
展开全部

这程序写的够乱的额。

一:std::stack是模板类,实现stack FILO功能

template< class T, class Container = std::deque<T> >
class stack{ ... }

使用时须指明参数,如std::stack<int>、std::stack<float>;


二:new/delete 动态内存的使用和释放

如std::stack<int>* fig = new std::stack<int>();


三:操作符号"."和"->"

通过对象访问用".",通过指针访问用“->"


写了点代码,供参考:

// 通过对象
stack<int> fig;
for( int i = 0; i < 10; i++ ){
    fig.push( i );
}
while( !fig.empty() ){
    cout<< fig.top() << endl;
    fig.pop();
}

--

// 通过指针

stack<int>* fig=new stack<int>();
for( int i = 0; i < 10; i++ ){
    fig->push( i );
}
while( !fig->empty() ){
    cout<< fig->top() << endl;
    fig->pop();
}
delete fig;
匿名用户
2013-10-06
展开全部

std::stack为模板类,需要参数。

stack fig=new stack();

改为

std::stack<int> fig;

另外new的数组a要delete掉

还有我觉得是不是你push和pop的用法有问题,像这样

for(int i=0;i<n;i++)
{
fig.push(a[n]);
}

for(int j=0;j<n;j++)
{
count += fig.top();
fig.pop();
}
更多追问追答
追问
这样动态定义数组还有别的方法吗?
追答
手动动态分配,或者使用能自动扩容的标准模板类。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式