动态大小的数组对:第一个/第二个设置值
当使用一组数组时,我总是收到错误“下标需要数组或指针类型”。我查看了所有其他类似问题的线程,但一直无法解决它。动态大小的数组对:第一个/第二个设置值
我动态地声明了一个对数组,它看起来像 pair * m_Array; 并设置数组大小为 m_Array = new pair [c];
现在我无法做的是访问数组中的第一个和第二个数组。当我尝试做这样的事情时,我会遇到错误。
for (int i = 0; i < m_Size; i++) {
m_Array->first[i] = rhs.m_Array->first[i];
m_Array->second[i] = rhs.m_Array->second[i];
}
它直观地看来似乎应该更喜欢下面的代码,但我的IDE不喜欢我有m_Array[i]
for (int i = 0; i < m_Size; i++) {
m_Array[i]->first = rhs.m_Array[i]->first;
m_Array[i]->second = rhs.m_Array[i]->second;
}
感谢您的帮助!
你快到了。
如果m_Array
是一对指针,那么m_Array[0]
是第一对;那么m_Array[0].first
是该第一对中的“第一”成员。
没有必要对非关联成员访问运算符->
,由于认购[i]
已经解除引用对您(即m_Array[i]
意味着*(m_Array + i)
)。所以你只需要普通会员访问运营商.
。
所以:
for (int i = 0; i < m_Size; i++) {
m_Array[i].first = rhs.m_Array[i].first;
m_Array[i].second = rhs.m_Array[i].second;
}
或者你可以跳过这一切的麻烦,只是写:
for (int i = 0; i < m_Size; i++) {
m_Array[i] = rhs.m_Array[i];
}
或者你可以跳过这也和变化从new
和数组一个不错的std::vector
,则有它为你做所有的工作。
谢谢!之前我没有这样做的原因是因为当我输入'm_Array [i] .'时,它表示没有成员可用,并且没有自动完成选项。我使用Visual Studio,所以通常如果没有自动完成选项,这意味着它不好。 – Grehgous
@Grehgous:您应该首先使用智能,智能感知/自动完成第二(或根本不使用)。依赖于这样的工具是一个坏主意,因为它们并不完美 –
请更具体关于_“我的IDE不喜欢”_。 –