gpt4 book ai didi

C++ - 模板和数据类型

转载 作者:行者123 更新时间:2023-11-28 02:26:20 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试创建一个可以接受任何输入的“通用类”。

我需要一种方法来将我的类接收到的任何输入存储在数组或 vector 中。然而,我正在努力弄清楚如何做到这一点。

我试图在我的 .cpp 文件中这样做:

template<typename T> T data[5];
template<typename T> vector<T> vect;

这是我的头文件的样子:

#include <vector>

using namespace std;

template <class T> class Stack {

public:

void push(T x);

T peek();
T pop();

int size();
bool contains();


private:

vector<T> data;

};

但这显然行不通,我被告知我正在做的事情是不可能的?我如何才能创建一个数组或 vector 来存储我的类(class)收到的任何内容?

我对此很陌生,所以对于愚蠢的错误和/或误解表示歉意。

最佳答案

试试这个。我在这里使用 vector 来存储数据。将其存储在 .cpp 文件中并编译和执行。

您有那些函数声明。您将在此处获得函数体。

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

template <class T>
class Stack{
private:
vector<T> elems;
public:
void push(T);
T pop();
T peek();
};

template<class T>
void Stack<T>:: push(T obj){
elems.push_back(obj);
}

template<class T>
T Stack<T>::pop(){
if(!elems.empty()){
T temp = elems.back();
elems.pop_back();
return temp;
}
}

template<class T>
T Stack<T>::peek(){
if(!elems.empty())
return elems.back();
}

int main(){
Stack<float> S;
S.push(5.42);
S.push(3.123);
S.push(7.1);
cout << S.pop() << endl;
S.pop();
cout << S.peek() << endl;
return 0;
}

输出

7.1
5.42

关于C++ - 模板和数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511669/

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