【问题标题】:How to set configuration parameters using an array table?如何使用数组表设置配置参数?
【发布时间】:2010-12-22 10:12:42
【问题描述】:

以下情况:我有一个包含一些常量值的数组,它们代表范围。
范围总是在数组中的两个值之间,例如:10 - 20 = range1
20-30 = range2 等等...

const int arr[] = {10, 20, 30, 40, 50, 60};

使用搜索功能,我在 arr[] 中搜索这些范围之间的数字(val)并返回找到 val 的范围索引。
例如:如果 val = 15 → 返回值为 1
如果 val = 33 → 返回值为 3

int Search(const int arr[], int n, int val)
{
    int i = 0;

    while (i < n) {
        if (val > arr[i])
            ++i;
        else
            return i;
    }
    return -1;
}

好的,到此为止……

现在出现以下问题: 我有一些参数,我们称它们为 x、y、z,它们是简单的整数,它们取决于 val 的值。 x、y、z的参数值我在编译之前就已经知道了,当然每个范围都不一样。
我现在如何使用范围索引设置 x、y 和 z? 例如,如何使用 x、y、z 的常量参数值创建一个数组并根据返回的范围索引设置它们?或者它应该是一个结构? 那会是什么样子……?

谢谢

【问题讨论】:

  • 到目前为止,我从问题陈述中了解到的是,您最初将拥有一些 x、y、z 变量的值(取决于 val),并且基于返回的索引,您再次想要设置x、y、z 值的值。如果我的理解不正确,请告诉我。
  • 你确实明白我的问题。你写的正是我想要的。

标签: c++


【解决方案1】:

您可以在struct 中保存每个范围的参数:

struct range_parameters {
    int x;
    int y;
    // etc
}

并将所有这些结构保存在std::vector

std::vector<range_parameters> params;

添加数据如下:

range_parameters params_for_range_1;
params_for_range_1.x = 1;
params_for_range_1.y = 2;

params[0] = params_for_range_1;

所以最后你可以将n 的参数访问为params[n-1]

【讨论】:

  • 谢谢!我将使用结构数组而不是 std::vector,因为我正在开发一个小型硬件。
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多