假设我有两个,例如float
数组a
和b
,int
键数组k
和模板{{1}我自己的功能,在单个数组上运行,类似
mySortByKey
是否有可能(例如,使用zip迭代器和某些类型的元组)在template<class T>
mySortByKey(int *k, T *a)
和mySort
上启用a
同时操作,以便可以根据它们同时进行排序键b
?
答案 0 :(得分:2)
我认为你不能那样做。但是,您可以通过使用辅助索引数组来完成类似的操作。
int keys[ARRAY_SIZE];
float a[ARRAY_SIZE];
float b[ARRAY_SIZE];
// Fill up the contents of keys, a, and b
// Create an array of indices.
int indices[ARRAY_SIZE];
for ( int i = 0; i < ARRAY_SIZE; ++i )
indices[i] = i;
// Sort the indices using keys.
mySortByKey(keys, indices);
// Now access the arrays a and b indirectly, using the sorted array
// of indices as an intermediate object.
for ( int i = 0; i < ARRAY_SIZE; ++i )
{
float fa = a[indices[i]];
float fb = b[indices[i]];
}