2010-12-22 94 views
1

以下情况:我有一个包含一些常量值的数组,它们表示范围。
甲范围总是两个值之间的阵列中,例如:10 - 20 =范围1
20-30 =范围2等...如何使用数组表设置配置参数?

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

与搜索功能,我搜索的号码(val)在arr []中的范围之间,并返回找到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; 
} 

OK,这工作了那么远,

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

THX

+0

到目前为止,我从问题陈述中得出的结论是,您最初将获得x,y,z变量的某些值(取决于val),并基于返回的索引再次设置x,y的值,z值。如果我的理解不正确,请告诉我。 – mukeshkumar 2010-12-22 10:44:02

+0

你的确理解我的问题。你写的正是我想要的。 – arge 2010-12-22 19:51:53

回答

0

你可以保持每个范围的参数在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]