我想我已经了解了如何创建和销毁它,但我无法找到访问每个对象的方法。以下是我创建它的方法:
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;
}
我正在创造和摧毁它们吗? 如何访问元素?
答案 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;
}
}