Zrobiłem programik, który produkuje 6-elementowe kombinacje z 10 elementów typu string (razem 210 sztuk, po 6 w każdej). Tym poszczególnym stringom przypisane są wektory po 30 elementów. Chciałbym teraz każdą 6-elementową kombinację wypełnić wartościami z tych wektorów. Zastosowałem pojemnik mapa, w którym kluczem jest string, a wartością poszukiwaną wektor 30-elementowy.
Jaki teraz mam zastosować iterator, aby kompilator grzecznie wpisał wartości z odpowiednich wektorów do kolejnych kombinacji stringów?
Ten iterator, którego używam wrzuca mi do każdej kombinacji całą mapę, czyli wszystkich 10 wektorów po 30 elementów. Oto fragment kodu:
vector<int>via11(ia11,ia11+30);
vector<int>via34(ia34,ia34+30);
vector<int>via72(ia72,ia72+30);
vector<int>via167(ia167,ia167+30);
vector<int>via190(ia190,ia190+30);
vector<int>via21(ia21,ia21+30);
vector<int>via64(ia64,ia64+30);
vector<int>via102(ia102,ia102+30);
vector<int>via178(ia178,ia178+30);
vector<int>via180(ia180,ia180+30);
typedef map<string,vector<int> >pojemnik;
pojemnik::iterator it;
pojemnik map;
map.insert(make_pair("ia11", via11));
map.insert(make_pair("ia34", via34));
map.insert(make_pair("ia72", via72));
map.insert(make_pair("ia167", via167));
map.insert(make_pair("ia190", via190));
map.insert(make_pair("ia21", via21));
map.insert(make_pair("ia64", via64));
map.insert(make_pair("ia102", via102));
map.insert(make_pair("ia178", via178));
map.insert(make_pair("ia180", via180));
for (it = map.begin();it!= map.end();++it)
std::copy(it->second.begin(),it->second.end(),// o ten fragment mi chodzi!!!
std::ostream_iterator<int>(std::cout,",")); // i tu też azor jest pogrzebany
std::cout<<std::endl;
Na moje oko to jest iterator kopiujący, ale całkiem bezmyślnie, jak leci. Co zrobić,żeby maszyna zaczęła myśleć ? Tylko mi nie odpowiadajcie, że mam sam zacząć myśleć - jestem leniwy, piwo chłodne, a dziewczyny gorące ! Pijąc Wasze zdrowie proszę o podpowiedź, albo jakiegoś gotowca. Wiem, że muszę się jeszcze dokształcić w iteratorach, ale lektura po angielsku idzie mi dość opornie. Pozdro!