I have simplified code to demonstrate my example, please feel free to extend it to wider sets.
edit: fixed that annoying error message at the end.
Code:
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main(){
vector<vector<float> > kF;
vector<float> F;
map <int, string> namesmap;
namesmap[1] = "one";
namesmap[2] = "two";
namesmap[3] = "three";
namesmap[4] = "four";
vector<map<string,int> > kFmap;
kFmap.resize(2);
kFmap[0][namesmap[1]] = 5;
kFmap[0][namesmap[2]] = 10;
kFmap[0][namesmap[3]] = 5;
kFmap[0][namesmap[4]] = 20;
kFmap[1][namesmap[1]] = 5;
kFmap[1][namesmap[2]] = 5;
kFmap[1][namesmap[3]] = 5;
kFmap[1][namesmap[4]] = 20;
for (unsigned int k = 0; k < 2; k++){
cout << "k = " << k << endl;
F.resize(6);
for (int i = 1; i <= 4; i++){
F[kFmap[k][namesmap[i]]]++;
}
for (int i = 1; i <= 4; i++){
cout << kFmap[k][namesmap[i]] << " kFmap | ";
cout << F[kFmap[k][namesmap[i]]] << " | ";
F[kFmap[k][namesmap[i]]] /= (10); //bug
cout << F[kFmap[k][namesmap[i]]] << " | ";
cout << endl;
} cout << endl;
kF.push_back(F);
F.clear();
}
return 0;
}