如何根据用户输入确定容器类型

How to determine container type based on user input

本文关键字:类型 输入 何根 用户      更新时间:2023-10-16

对于我的一个学校项目,我正在实现一个包含两个单独容器的类,这些容器应该是基于用户指定的容器的堆栈或队列。我的问题是,是否可以创建两个私有成员容器 - 我们称它们为 container1 和 container2 - 并指定每个容器分别是堆栈还是队列?(施工时(

使用模板,您可能有

template <typename Container1, typename Container2>
class MyClass
{
public:
// ....
private:
Container1 c1;
Container2 c2;
};
// Dispatch functions for non uniform code
template <typename T> void do_job_specific(std::stack<T>& s) {/*..*/}
template <typename T> void do_job_specific(std::queue<T>& d) {/*..*/}
// Common code
template <typename Container> void do_job_common(Container& d) {/*..*/}

和主要工作

template <typename T> // would be MyClass<C1, C2>
void do_job()
{
T myClass;
// ...
}
enum class EContainer { Stack, Queue};
void dispatch_job(EContainer e1, EContainer e2)
{
using T1 = std::stack<int>;
using T2 = std::queue<int>;
if (e1 == EContainer::Stack) {
if (e2 == EContainer::Stack)) {
do_job<std::stack<T1, T1>>();
} else {
do_job<std::stack<T1, T2>>();
}
} else {
if (e2 == EContainer::Stack)) {
do_job<std::stack<T2, T1>>();
} else {
do_job<std::stack<T2, T2>>();
}
} 
}

现在main只需要使用用户选择的枚举调用该方法。