【问题标题】:How to declare multiple arrays with similar name in a for loop?如何在for循环中声明多个具有相似名称的数组?
【发布时间】:2017-08-21 19:32:23
【问题描述】:

我想声明 32 个名称为 efficiency_module_cmp_%d_x 的一维数组,%d 从 1 变为 16,efficiency_module_cmp_%d_y,%d 从 1 变为 16。 我正在使用以下代码来执行此操作,但这不起作用。这有什么问题:

char array_name[100];
char array_name1[100];


for ( int i=0; i<16;i++)
{

    sprintf(array_name,"efficiency_module_cmp_%d_x",i+1); 
    float array_name[n] ; 
    sprintf(array_name1,"efficiency_module_cmp_%d_y",i+1); 
    float array_name1[n] ; 

}

提出可能的解决方案。

【问题讨论】:

  • 您不能在 C 或 C++ 的运行时创建类型或对象的名称。为什么你认为你需要这样做?
  • 他可以在宏中
  • @Flip 不在运行时。
  • std::map 可能是一种解决方案。
  • 听起来你想要多维数组,或者更好的向量或映射。

标签: c++ arrays for-loop floating-point char


【解决方案1】:

您不能在运行时创建对象名称(C++ 是静态类型的)。相反,您可以制作数组的向量(或任何其他容器),然后将数组推送到容器的后面,如下所示:

#include <vector>
int main()
{
    std::vector<char*> vectorOfArrays;
    for (int i = 0; i < 16; i++) {
        vectorOfArrays.push_back(new char[10]);
    }
    return 0;
}

然后您可以像这样访问您的数组之一:vectorOfArrays[3];

【讨论】:

  • 谢谢,我可以使用上述解决方案做我想做的事。它奏效了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
相关资源
最近更新 更多