哪个更好?使用2个数组或成对数组

Which is better? Using 2 arrays or array of pair?

本文关键字:数组 2个 使用 更好      更新时间:2023-10-16

我有几个对象,每个对象有两个属性alpha和beta。
我有大量的运算,给我一个对象,我需要得到对应对象的值和值。有两种方法-

1)使用2个数组-一个用于alpha,一个用于beta

for(each query){
    cin>>index;
    int val1 = alpha[index];
    int val2 = beta[index];
    //Do something with val1 and val2
}
2)使用pair数组
for(each query){
    cin>>index;
    pair<int,int> requiredPair = pairArray[index];
    int val1 = requiredPair.first;
    int val2 = requiredPair.second;
    //Do something with val1 and val2
}

以上哪种方法更有效?我认为由于缓存,方法2会更有效。这是真的吗?另外,如果每个对象都有多个属性怎么办?是使用多个数组更好还是只使用一个结构数组更好?

CPU缓存策略依赖于数据在空间和时间上的近似值。换句话说,在时间上接近的访问被认为在内存地址上接近。

因此,如果您同时访问记录中的两个字段,那么单个数组可能更有意义。如果您访问一个字段中的所有记录,然后访问另一个字段中的所有记录,那么两个数组可能更有意义。

作为题外话,我通常避免std::pair而更喜欢struct,因为firstsecondstruct中的意义小于namedate