store objects in vector, which is inside a map in C++ -
store objects in vector, which is inside a map in C++ -
i trying create map contains string key , vector of myclass.
std::map<string,vector<myclass>> m; i need populate vector , map dynamically (reading values file).
class myclass{ string datamember1; ... myclass() { ... } }; how should proceed it??
also want able access objects in vector based on string key.
for example:
std::map<string,vconnect>::iterator pos; pos = mapgraph.find(string); cout<<(pos->second)[0]->datamemberofmyclass will (pos->second)[0] indicate first myclass object stored in vector??
thanks
generally, when mapped type container, using [] everywhere works well; if entry isn't present, created empty container, things like:
m[key].push_back( newelement ); or
m[key].begin(), m[key].end() or even:
if ( !m[key].empty() ) dosomethingwith( m[key].second[0] ); work correctly. if you're doing number of operations on same element (as in lastly 2 cases), might want hold in reference:
std::vector<myclass>& elem = m[key]; // ... about exception if you're not modifying element, , don't want create entry if empty. in cases, you'll need find, , test:
std::map<std::string, std::vector<myclass>>::const_iterator entry = m.find( key ); if ( entry != m.end() ) { std::vector<myclass>& elem = entry->second; // ... } c++ vector maps
Comments
Post a Comment