【问题标题】:How to create variable name with integer appended to the end?如何创建在末尾附加整数的变量名?
【发布时间】:2013-08-09 13:02:07
【问题描述】:

我想创建一个 for 循环,用 c++ 中的数据填充一堆数组。现在为了节省空间,将来一旦添加了更多数组,我就有了 for 循环。用于演示的每个数组都称为 Array#(# 是一个数字)for 循环的要点是设置一个具有最大数组的常量,然后通过将 i 附加到数组名称的末尾来循环填充每个数组。

以伪代码为例:

for (i = 1; i < numberofarrays; i++)  
{ fill (Array & i) with ("Array" & i & "-default.txt")}

【问题讨论】:

  • 那么...你想要一个数组数组吗?
  • 不,我只想能够更改“numberofarrays”,它将填充所有排列为“Array”+ 数字的数组,查找文件很容易,我知道该怎么做。
  • 你不能在 C++ 中这样做。使用容器。

标签: c++


【解决方案1】:

任何类型的代码都不可能生成变量名。
(意味着不可能在运行时或编译时生成动态变量名)

可能的最佳解决方案是数组数组:

int Arrays[][];

调用Arrays[0] 会给你第一个数组。

如果要在运行时确定数组的数量,则需要使用指针!

看起来像这样:

(int[])* Arrays = new (int[])[numberofarrays];

访问数组中的数组也一样!

另一种方法是使用来自std 的容器vector

代码如下所示:

#include<vector>

// More includes

// Optional
using namespace std;

// Somewhere in your code
vector<vector<int>> Arrays;

您仍然可以使用标准数组方法访问元素(例如Arrays[15][78]

【讨论】:

  • 好的,谢谢,我会尝试这些方法,看看哪种方法对我有用
【解决方案2】:

你真的不需要这个名字。您可以使用数组的 std::vector 。这不会开箱即用,请参阅Correct way to work with vector of arrays

另一种方法是使用数组的 std::map。如果这是您真正想要的,您可以将名称作为键。您仍然必须使用与以前相同的解决方法才能将数组作为值。例如,请参阅Character Array as a value in C++ map

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2011-04-06
    • 2018-12-17
    • 2012-12-15
    相关资源
    最近更新 更多