我必须根据用户输入来创建特殊类型的矢量。
例如用户必须选择是否要创建整数向量或字符串向量。
是否可以预先定义向量并在例如开关盒?

就像是:

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/

10-12 14:51