我目前有一个数组pair<double, int>
,我使用一个简单的自定义比较器函数对其进行排序,例如
// compare by first
int sort_index_lcomparator(const pair<double, int>& a, const pair<double, int>& b) {
return a.first < b.first;
}
// then sort simply like
pair<double, int> arr[size];
std::sort(arr, arr + size, sort_index_lcomparator);
我实际上对索引顺序感兴趣,而不是对排序的双打感兴趣。我的问题是我想改变这个结构,取而代之的是一个由两个数组组成的结构,而不是一个结构的数组,即我想优化局部性和自动矢量化,但在这种情况下,我需要一个重载swap
,即专门附加到一个类型。我想我需要一些类似于重新定义类型的东西,swap
并double
在这样的自定义中保持两个数组同步swap
。有没有办法swap
在有限的范围内以这种方式“覆盖”?