检索数组名称

时间:2014-10-06 14:27:38

标签: c++ arrays struct

我在c ++中编写了一个函数,它接收一个struct作为输入。收到的struct对象有两个数组。我需要将这两个数组用于不同的目的。数组名称已以特定格式创建。如何检索字符串中的数组名称。

struct INFO
{

 float fADataLHS[3] = {1,2,3};
 float fADataRHS[3] = {4,5,6};

已定义Struct INFO,其中已定义两个数组已初始化。函数useStruct将这两个函数用于不同的目的。

void useStruct(struct *INFO)
{
  --------;
  --------;
}

int main()
{
   struct INFO info;
   useStruct(info);

}

我想要一个方法,我可以在其中检索数组的名称。 fAdataLHS并将其存储到字符串中。我们的想法是从字符串名称中找到子字符串LHS和RHS,然后进行处理。

PS:我对c ++很新。

2 个答案:

答案 0 :(得分:2)

我会很简单,因为你是C ++的初学者。

如果你想将这两个数组用于不同的目的,那就干嘛。例如:

void use_array_for_different_purposes(INFO *info)
{
    // Purpose one, printing values using fADataLHS.
    for (int i = 0; i < 3; i++) {cout << info->fADataLHS[i] << endl;}
    // Purpose two, computing total sum using fADataRHS.
    int acum;
    for (int i = 0; i < 3; i++) {acum += info->fADataRHS[i];}
}

如您所见,您不需要将数组名称作为字符串值。

答案 1 :(得分:0)

如果我理解为corectly,那么你的用例就是:你有两个(或更多)名字,每个名字都有一个浮点数组。您希望按名称获取数组并处理数据。

考虑以下代码:

class INFO
{
    std::map<std::string, std::vector<float>> vectors;

public:

    INFO() : vectors{}
    {
        vectors["fADataLHS"] = { 1, 2, 3 };
        vectors["fADataRHS"] = { 4, 5, 6 };
    }

    const std::vector<float>& operator[](const std::string& key) const // access vector by key
    {
         return vectors.at(key);
    }

};

void useStruct(const INFO& info) // pass instance by const reference
{
    std::cout << info["fADataLHS"][0] << "\n"; // access element 0 from the fADataLHS array

    // get the entire array:
    const auto& arr = info["fADataRHS"];

    // this will throw a std::out_of_bounds
    const auto& arr = info["non-existent-key"];

}

编辑:其他一些说明:

  • 在C ++中尝试不使用float - 使用double代替
  • 如果您需要更改客户端代码中的矢量内容,请添加operator[]的非常量版本