Null Asked:2022-06-06 21:49:11 +0000 UTC2022-06-06 21:49:11 +0000 UTC 2022-06-06 21:49:11 +0000 UTC 创建自己的容器类的实例时如何将元素类型传递给“<>” 772 我的任务是在 C++ 中将队列实现为一个类。在向量类的构造函数中,传递了元素类型,例如vector <int> a. 我怎样才能将元素类型传递给我的类构造函数,比如MyQueue <int> a? c++ 1 个回答 Voted Best Answer KoVadim 2022-06-07T15:10:23Z2022-06-07T15:10:23Z 您的模板类很可能看起来像这样 template <typename T> class MyQueue { }; 并且这个类已经可以随心所欲地使用了 MyQueue<int> a; 另一件事是这个类什么都不做 :) 但这很容易添加。如果你的类不应该做一些“超自然”的事情,那么我们使用一个简单的规则,只要这个“来自构造函数的类型”是需要的(是的,我知道这是一个错误的措辞,但这是一个关于模板的短期课程classes :) ),只写T(这个名字在 typename 之后的尖括号中)。 例如,让我们为push template <typename T> class MyQueue { std::vector<T> m_data; // где то же нужно это хранить public: void push(T el) { m_data.push_back(el); }; }; 好吧,或者是这样(如果类型是“大”,那么最好通过常量引用传递它。或者甚至值得考虑std::move)。 void push(const T& el) { m_data.push_back(el); }; 现在,当您编写MyQueue<double> data;它时,它将在这样的地方生成 template <> class MyQueue { std::vector<double> m_data; // где то же нужно это хранить public: void push(double el) { m_data.push_back(el); }; }; 现在添加您需要的功能,您就完成了。
您的模板类很可能看起来像这样
并且这个类已经可以随心所欲地使用了
另一件事是这个类什么都不做 :) 但这很容易添加。如果你的类不应该做一些“超自然”的事情,那么我们使用一个简单的规则,只要这个“来自构造函数的类型”是需要的(是的,我知道这是一个错误的措辞,但这是一个关于模板的短期课程classes :) ),只写
T(这个名字在 typename 之后的尖括号中)。例如,让我们为
push好吧,或者是这样(如果类型是“大”,那么最好通过常量引用传递它。或者甚至值得考虑
std::move)。现在,当您编写
MyQueue<double> data;它时,它将在这样的地方生成现在添加您需要的功能,您就完成了。