是否可以在c++中为变量使用动态名称
Is it possible to use dynamic name for variables in c++
如果可能的话,我想使用动态名称。这里有一个关于我的意思的例子:
int sol1,sol2;
for(int i=1; i<3; i++){
sol"i"=i*i;
return max(sol1,sol2);
}
对于sol"i"
,我表示第一个周期中的sol1
(当I=1时)和第二个周期的sol2
(当I=2时)。这也有可能吗?
按照您的要求执行是不可能的,但您应该找到同样富有表现力的替代方案。
可能最常见的方法是使用vector
(或数组)并对其进行索引:
std::vector<int> sol(2);
for (int i = 0; i < 2; ++i) {
sol[i] = i * i;
}
另一种方法是使用std::map
将所需名称映射到生成的变量:
std::map<std::string, int> variables;
for (int i = 1; i < 3; ++i) {
std::string varname = "sol" + std::to_string(i);
variables[varname] = i * i;
}
但是,请注意,这是一个极其缓慢的解决方案。我提到它只是因为它允许你做一些类似于你最初的例子的事情。请改用矢量/数组方法。
您最好使用数组。
int sol[2];
for(int i = 0; i < 2; i++)
{
sol[i] = i*i;
}
return max(sol[0], sol[1]);
这是不可能的。您可以使用数组:
int sol[2];
for(int i=0; i<2; i++){
sol[i]=i*i;
}
return max(sol[0],sol[1]);
请注意,在C++中,数组是0索引的。
正如其他人所说,你所问的是不可能的,但有很多替代解决方案。如果可以使用的话,使用C数组或std::数组的int是最好的方法
但假设变量名不能更改(例如,它们是函数的参数,您不想更改签名),但您仍然希望通过索引对它们进行寻址,这样您就可以循环使用它们。一种方法是使用指针数组
int * sol[2] ={&sol0,&sol1};
*sol[0]=1;
这行得通,但在我看来很难看。另一种解决方案是使用元组:
std::tuple<int&,int&> sol=std::tie(sol0,sol1);
std::get<0>(sol)=1;
另一种选择是将值复制到一个数组中,处理该数组,然后将其复制回来。
一个简单的int数组不能解决您的问题吗?!?
int sol[2];
for(int i=0; i<2; i++){
sol[i]=(i+1)*(i+1);
return max(sol[0],sol[1]);
}
相关文章:
- 如果非动态变量被指针引用,何时超出范围?
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- C++ 卷曲后动态变量
- 动态变量 cpp 编译
- 将删除运算符放置在何处以进行动态变量
- cpp 中的析构函数是否自动调用?即使析构函数没有提及非动态变量,它们也会被删除吗?
- C++动态变量和未定义内存之间的差异
- 动态变量名称构建,连接
- XML文件中的动态变量和函数调用
- 动态变量上的c++MACRO未声明标识符
- 内存泄漏递归传递动态变量
- 获取具有动态变量的结构的大小
- 创建动态变量
- C++:如何在类中获取具有动态变量的私有属性
- 基于 txt 文件的动态变量
- C++:使用宏字符串将项目转换为动态变量的简单方法
- 通过引用传递动态变量的指针
- 静态与堆栈动态变量的访问效率
- 指针、动态变量C++
- 来自c++指针的c#动态变量