哪个更好?使用2个数组或成对数组
Which is better? Using 2 arrays or array of pair?
我有几个对象,每个对象有两个属性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
,因为first
和second
在struct
中的意义小于name
和date
。
相关文章:
- 如何在C++中比较两个char数组
- 在c++中获取两个大int,并将它们存储在数组中
- 如何以优化的方式同时迭代两个间距不相等的数组
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 如何从txt文件中读取多个不同长度的数组?
- C++,数组有多少个地址?
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 为什么 2 个相同数组的元素彼此相等
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 可以将两个相同类型的连续数组视为一个数组吗?
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 使用嵌套函数数组是个好主意吗?
- 链表数组(5 个队列)
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 指向数组第一个元素的指针的地址
- 用 std::valarray 替换 POD C 样式数组是个坏主意吗?
- OpenGL:两个顶点数组 + 两个索引数组
- c++多维数组多个数据类型
- 使用C++AMP处理大型数组(65536+个元素)
- 在c++中使用MKL函数初始化数组是个好主意吗?