📜  门| GATE-CS-2017(Set 1)|问题5(1)

📅  最后修改于: 2023-12-03 15:28:45.232000             🧑  作者: Mango

GATE-CS-2017(Set 1) - 问题5

本题将要求我们实现一个C++类,该类用于依次存储不同值类型的数据,并再次以该顺序输出。我们可以使用模板类,具体实现如下:

template <typename T> 
class Storage {
private:
    std::vector<T> items;
public:
    void push(T item) {
        items.push_back(item);
    }
    void print() {
        for (T item : items) {
            std::cout << item << " ";
        }
        std::cout << std::endl;
    }
};

如上所示,我们使用一个vector成员变量来存储push函数中添加的值,并使用print函数逐一打印输出。

为了支持自定义的数据类型,我们需要使用模板类。我们可以使用Storage<int>指定存储整数,使用Storage<double>来存储浮点数。还可以使用Storage<std::string>指定字符串数据的存储方式。使用示例如下:

int main() {
    Storage<int>   intStorage;
    Storage<double> doubleStorage;
    Storage<std::string> stringStorage;

    intStorage.push(1);
    intStorage.push(2);
    intStorage.push(3);
    std::cout << "Int storage: ";
    intStorage.print();

    doubleStorage.push(1.23);
    doubleStorage.push(2.34);
    doubleStorage.push(3.45);
    std::cout << "Double storage: ";
    doubleStorage.print();

    stringStorage.push("Hello,");
    stringStorage.push("world!");
    std::cout << "String storage: ";
    stringStorage.print();
}

运行后,我们将得到以下输出:

Int storage: 1 2 3 
Double storage: 1.23 2.34 3.45 
String storage: Hello, world! 

此外,我们还可以支持存储更高级的自定义数据类型,只需在类定义时指定存储类型即可:

class MyClass {
public:
    int foo;
    double bar;
};

Storage<MyClass> myClassStorage;

最终,我们得到一个可以动态存储任意类型数据并按顺序输出的类。