我必须根据用户输入来创建特殊类型的矢量。
例如用户必须选择是否要创建整数向量或字符串向量。
是否可以预先定义向量并在例如开关盒?
就像是:
vector<WILDCARD> vec;
switch(input) {
case 1:
vec = vector<int>()...
break;
case 2:
vec = vector<string>()....
break;
....
最佳答案
是否可以预先定义向量并在例如开关盒?
否。C++是一种静态类型的语言。这就是说,每个变量的类型必须在编译时就知道了,一旦知道就不能在以后更改,即使在编译时也不能更改。因此,您正在做的事情是不可能的。
如果要给用户选择类型。然后,您可以在每个case
中定义所有可能选择的变量,并与用户选择的变量一起使用,如下所示:
switch(input) {
case 1:
{
std::vector<int> vec;
//work with vec which is vector of int!
}
break;
case 2:
{
std::vector<std::string> vec;
//work with vec which is vector of string!
}
break;
//....
或者,如果您担心代码重复,那么可以改为执行以下操作:
template<typename T>
void Work()
{
std::vector<T> vec;
//work with vec of type T
}
switch(input) {
case 1:
Work<int>();
break;
case 2:
Work<std::string>();
break;
//....
关于c++ - 通配 vector 模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5872469/