gpt4 book ai didi

C++ 堆栈模板

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:36 26 4
gpt4 key购买 nike

我为我的类(class)制作了一个模板来模拟堆栈的基本功能,但我遇到了一个错误,我不知道如何修复它。

我的代码:

#using <mscorlib.dll>
using namespace System;
using namespace System::IO;

#include <iostream>
#include <vector>
using namespace std;

template<class T>
class stack
{
vector<T> *v;
int n;
public:
stack(int,vector<T>*);
~stack();

void push(T);
void pop();

void afis();
};

template<class T>
stack<T>::stack(int x, vector<T> *y)
{
x = n;
y = v;
}

template<class T>
stack<T>::~stack()
{
}

template<class T>
void stack<T>::push(T item)
{
v->push_back(item);
}

template<class T>
void stack<T>::pop()
{
v->pop_back();
}

template<class T>
void stack<T>::afis()
{
typedef vector<T>::iterator it;
for(it i = v->begin(); i != v->end(); ++i)
cout << *i << " ";
}

int main()
{
int n, nr;
cin >> n;

vector<int> v;
for(int i = 0; i < n; i++)
{
cin >> nr;
v.push_back(nr);
}

stack<int> st(n, &v);

st.pop();
st.afis();
}

错误是在运行时,它说它访问了它不应该访问的内存。另外我想知道我是否可以通过一个类似于 stack *st = new stack(n, &v) 的指针来声明我的堆栈。这可能吗?

最佳答案

你的构造函数都是倒着的:

template<class T> 
stack<T>::stack(int x, vector<T> *y)
{
n = x;
v = y;
}

关于C++ 堆栈模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com