如何根据用户输入确定容器类型
How to determine container type based on user input
对于我的一个学校项目,我正在实现一个包含两个单独容器的类,这些容器应该是基于用户指定的容器的堆栈或队列。我的问题是,是否可以创建两个私有成员容器 - 我们称它们为 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
只需要使用用户选择的枚举调用该方法。
相关文章:
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 当我输入字符类型的数字时,为什么我无法获得整数?
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- 我想知道为什么"std::unique_ptr<int> foo(新 int)"是合法的,因为"std::<int>unique_ptr"要求输入参数类型应该是"int"?
- 需要有关运行具有输入类型的编译器的帮助
- 如何在 CPP 中检查给定输入的数据类型?
- 将空格作为单字符数据类型的输入?
- 在函数中使用运算符重载,在 c++ 中使用 const 类型输入参数
- 有没有办法将输入类型包装到C++中的模板类?
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- 函数重载并根据相同的输入返回不同的数据类型
- C++ 从用户那里获取未知数据类型输入
- C 异质容器,作为类型输入
- 如何在无效的数据类型输入后继续循环
- WSDLPull 使用复杂类型输入
- 使用std::cin (c++)检查有效的类型输入
- 为已定义的变量传递错误的类型输入
- 如何验证数据类型输入
- c++中的混合数据类型输入