What I did is use the at method where the index for F comes from an "untrusted" source (in very indirect ways from a map). Try this:
Code:#include <iostream> #include <vector> #include <map> #include <exception> using namespace std; int main(){ try { 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.at(kFmap[k][namesmap[i]])++; } for (int i = 1; i <= 4; i++){ cout << kFmap[k][namesmap[i]] << " kFmap | "; cout << F.at(kFmap[k][namesmap[i]]) << " | "; F.at(kFmap[k][namesmap[i]]) /= (10); //bug cout << F.at(kFmap[k][namesmap[i]]) << " | "; cout << endl; } cout << endl; kF.push_back(F); F.clear(); } } catch (exception& e) { cout << e.what() << '\n'; } return 0; }



CornedBee