C ++ - 模板和数据类型

时间:2015-05-28 16:01:14

标签: c++ templates generic-programming

我对C ++很陌生,正在尝试创建一个" Generic Class"可以接受任何输入。

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

我试图在我的.cpp文件中执行此操作:

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

这是我的Header文件的样子:

#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;

};

但这显然不起作用,我理解我正在做的事情是不可能的?我怎样才能创建一个可以存储我班级收到的数组或数据?

我对此很陌生,所以为愚蠢的错误或误解道歉。

1 个答案:

答案 0 :(得分:2)

试试这个。我在这里使用>> git rev-list HEAD | wc -l 1730 来存储数据。将其存储在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;
}