gpt4 book ai didi

c++ - 在 C++ 中基于 bool 值定义变量类型

转载 作者:行者123 更新时间:2023-11-28 06:10:03 24 4
gpt4 key购买 nike

取决于 bool 变量 myBool我想声明一个变量 mVect作为一维或二维 vector ,即:

  if (myBool){
vector < vector< float > > myVect;
}
else{
vector <float> myVect;
}

///// later.....//////

//call many instances of overloaded myFn( vector<float>),
//or myFn ( vector<vector<float>)

//// more stuff.....//
// call more instances of myFn

我希望变量的范围超出 if 语句。使用三元运算符( Expand scope of a variable initialized in a if/else sequence )似乎不适用,因为变量类型不同。

我这样做的动机是我有一个重载函数 myFn , 一个版本输入一个 vector ,另一个放入 vector<vector> .我不想在 myFn 中加入 if 语句出于性能原因区分案例——我想调用一个 if声明和不调用万亿时的声明if重复调用时的语句 myFn

编辑:
这是一个物理模拟。我想保留进行一维或二维计算的能力,而 myFn 分别进行一维或二维插值。除了变量的不同初始化之外,我不想修改任何代码库,因此我想保持变量名称相同,这样我就可以调用相同的重载插值器,我也不想在插值器中使用 if 语句

最佳答案

如果我正确理解你的问题,你希望局部变量根据 bool 值的运行时值具有不同的类型。

这在 C++ 中是不可能实现的。您有两个选择:

1) 如果 bool 值是 const(或来自 constexpr),您可以将代码转换为模板并使用 std::conditional 来选择正确的类型。

2) 在您的if 的各自范围内完成所有工作,那么变量是不同的并且它们具有不同的类型没有问题:

  if (myBool){
vector < vector< float > > myVect;
...
myFn(myVect);
}
else{
vector <float> myVect;
...
myFn(myVect);
}

关于c++ - 在 C++ 中基于 bool 值定义变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com