首先,我有一个数组int a[1000][1000]。所有这些整数都在 0 到 32767 之间,它们是已知的常量:它们在程序运行期间永远不会改变。
其次,我有一个数组 b[32768],它包含 0 到 32 之间的整数。我使用这个数组将 a 中的所有数组映射到 32 个 bin:
int bins[32]{};
for (auto e : a[i])//mapping a[i] to 32 bins.
bins[b[e]]++;
Run Code Online (Sandbox Code Playgroud)
每次,数组 b 将用一个新数组初始化,我需要将数组 a 中的所有 1000 个数组(每个包含 1000 个整数)散列到 1000 个数组,每个数组包含 32 个整数,表示有多少整数落入其每个 bin 。
int new_array[32768] = {some new mapping};
copy(begin(new_array), end(new_array), begin(b));//reload array b;
int bins[1000][32]{};//output array to store results .
for (int i = 0; i < 1000;i++)
for (auto e : a[i])//hashing a[i] …Run Code Online (Sandbox Code Playgroud)