I have a need to store some data like this in a table. this table is just an example but the values can increase in numbers.
key 1 Key2 Value
100 1 1
100 1 2
100 1 3
100 2 1
100 2 2
100 2 3
100 2 4
So i decided to have a map with a key pair and a vector to store the value.
int main()
{
typedef std::vector<int> ValueVec_t;
typedef std
air<int, int > key_type_K1_K2_t;typedef std::map<key_type_K1_K2_t, ValueVec_t> finalMap_t;
key_type_K1_K2_t keypair;
ValueVec_t valueVec;
ValueVec_t::iterator vec_iter;
finalMap_t finalMap;
// store the value into the vector
for (size_t i=1; i<10; ++i)
{
cout << "Storing into the vector " << i << endl;
valueVec.push_back(i);
}
// Store the vector into the map
keypair.first = 100;
keypair.second = 1;
finalMap[keypair] = valueVec;
keypair.first = 100;
keypair.second = 8;
finalMap[keypair] = valueVec;
// print the value stored in a map
for( finalMap_t::iterator iter = finalMap.begin(); iter != finalMap.end(); ++iter )
{
for (vec_iter = valueVec.begin();vec_iter!=valueVec.end();++vec_it er)
{
cout << "KEY 1 " << (*iter).first.first << " " << "KEY 2 " << (*iter).first.second << " " << "Value" << *vec_iter << endl;
}
}
// Erase the element stored in a vector
for( finalMap_t::iterator iter = finalMap.begin(); iter != finalMap.end(); ++iter )
{
for (vec_iter = valueVec.begin();vec_iter!=valueVec.end();++vec_it er)
{
valueVec.erase(vec_iter);
}
}
}
Problem is with the erase, actually i want to erase the vector element one by one stored in the map, and all the vector element stored for a specify key, i want to remove that map key. and iterate through the next map entry.
Please someone have a check. Thanks in advance.
