创建一个指向结构数组指针数组的指针,然后访问结构中的变量

时间:2015-09-04 19:36:47

标签: c++ arrays pointers struct

我想我已经了解了如何创建和销毁它,但我无法找到访问每个对象的方法。以下是我创建它的方法:

CCyIsoPktInfo   **arrayOfPointers = new CCyIsoPktInfo*[QueueSize];
for (int i = 0; i < QueueSize; ++i)
{
     arrayOfPointers[i] = new CCyIsoPktInfo[PACKETS_PER_TRANSFER];
}

以下是我如何摧毁它:

for (int i = 0; i < QueueSize; ++i)
{
    delete[] arrayOfPointers[i];
}
delete[] arrayOfPointers;

但是我需要访问数组中的每个nth_Object.status,给定该数组的nth_Pointer。所以一般的想法是这样的:

for (int nth_Object = 0; nth_Object < PACKETS_PER_TRANSFER; ++nth_Object)
{
    var[nth_Object] = (*arrayOfPointers[nth_Pointer]).[nth_Object].status;
}

我正在创造和摧毁它们吗? 如何访问元素?

1 个答案:

答案 0 :(得分:1)

要迭代2D数组,您可以使用嵌套循环,例如

for (int nth_Object = 0; nth_Object < QueueSize; ++nth_Object)
{
    for (int nth_Pointer = 0; nth_Pointer < PACKETS_PER_TRANSFER; ++ nth_Pointer)
    {
        std::cout << arrayOfPointers[nth_Object][nth_Pointer].status;
    }
}

虽然值得,但我建议使用std::vector而不是动态分配自己的数组

std::vector<std::vector<CCyIsoPktInfo>> data;

然后你可以像

一样迭代
for (auto const& row : data)
{
    for (auto const& element : row)
    {
        std::cout << element.status;
    }
}
相关问题