比较数组的最佳方法?

时间:2014-09-18 13:57:10

标签: c++ visual-c++

声明mArrayTemp

struct _ARRAY_DATA
{
    int nCode;
    short sDuration;
    short sCount;
};

_ARRAY_DATA mArrayTemp[400];

mArrayReal已包含一些数据,可以复制

for(int i = 0; i < 400, ++i)
{
    mArrayTemp[i].nCode = mArrayReal[i].nCode;
    mArrayTemp[i].sDuration = mArrayReal[i].sDuration;
    mArrayTemp[i].sCount = mArrayReal[i].sCount;
}

//then we do something here

对于下一阶段,比较两个数组mArrayTempmArrayReal的最有效方法是什么,以确保它们仍然相同,并且在某些代码中没有任何变化?

2 个答案:

答案 0 :(得分:1)

if (memcmp(mArrayTemp, mArrayReal, sizeof(mArrayTemp) == 0)
{
    //they have the same values
}

答案 1 :(得分:0)

memcmp不是比较两个数组的最佳方法。使用std::equal。我特别喜欢使用Boost.Range来很好地引用整个集合,它提供了equal的形式。

if (equal(mArrayTemp, mArrayReal)) { ⋯

不要担心填充,因为编译器会做正确的事情。这不是像memcmp那样的任何类型知识的终结。