gpt4 book ai didi

c++ - 在 C++ 中,如何编写类 ADT——如 std::vector 或 std::stack——将 <> 中的数据类型作为参数并相应地构造对象?

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:06 24 4
gpt4 key购买 nike

即。我想编写一个可以像这样使用的类 ADT:

myADT <type> objectA;

就像有人会使用像这样的 vector 一样:

vector <type> aVector;

我猜它可能与模板和重载 <> 运算符有关,但我如何让它将数据类型作为参数?

最佳答案

假设您有一个使用硬编码 typedef T 实现 ADT 的类:

class ADT
{
public:
typedef int T;

ADT();
T& operator[](size_t index);
const T& operator[](size_t index) const;
size_t size() const;
...
private:
T* p_;
size_t size_;
};

(你必须制定适合你实际ADT的内部存储和成员函数)。

要更改它以便您可以像为 std::vector 等所做的那样指定 T:

template <typename T>    <-- specification of T moved to here
class ADT
{
public:
<-- typedef for T removed from here
ADT();
T& operator[](size_t index);
const T& operator[](size_t index) const;
size_t size() const;
...
private:
T* p_;
size_t size_;
};

用法是:

ADT<int> an_adt_int;
ADT<double> an_adt_double;

关于c++ - 在 C++ 中,如何编写类 ADT——如 std::vector 或 std::stack——将 <> 中的数据类型作为参数并相应地构造对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5149430/

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