C ++在"打包"上运行阵列

时间:2016-01-06 21:29:49

标签: c++ arrays templates iterator tuples

假设我有两个,例如float数组abint键数组k和模板{{1}我自己的功能,在单个数组上运行,类似

mySortByKey

是否有可能(例如,使用zip迭代器和某些类型的元组)在template<class T> mySortByKey(int *k, T *a) mySort上启用a同时操作,以便可以根据它们同时进行排序键b

1 个答案:

答案 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]];
}