class Obj {
private:
const string & m_String;
public:
Obj ( const string & x )
: m_String ( x ) {}
... // getters, overloaded operators etc
};
int main ( void ) {
// new map
map<string, vector<Obj>> myMap;
myMap . insert ( pair<string, vector<Obj>> ("1st", vector<Obj>() ) );
Obj a1 ("a"), a2 ("b");
// add three elements into "1st"
myMap["1st"] . push_back (a1);
myMap["1st"] . push_back (a2);
myMap["1st"] . push_back (a2);
// display contents of all vecs inside map
for ( map<string, vector<Obj>>::const_iterator it1 = myMap . begin(); it1 != myMap . end(); ++it1 ) {
cout << it1 -> first << ":"<< endl;
for ( vector<Obj>::const_iterator it2 = it1->second . begin(); it2 != it1->second . end(); ++it2) {
cout << *it2;
if ( it2 != prev(it1->second . end()) ) cout << ", ";
else cout << endl;
}
}
return 0;
}
Я пытаюсь вернуть sh некоторые объекты обратно в вектор внутри карты. Код компилируется без предупреждений, но вывод будет
1st:
a, 1st, 1st
вместо желаемого вывода
1st:
a, b, b
Не удается выяснить причину git причины. Вектор отлично работает с int, strings et c. и он должен работать с объектами, но по некоторым причинам это не так. Пробовал использовать указатели объектов, а безрезультатно. С уважением