Powiedzmy mamy std::set<int>
i chcemy stworzyć std::vector<int>
ze wszystkimi wartościami z tego zestawu:Inicjalizacja pojemnik z zakresu iteratora pojemnika z innego typu
std::set<int> set;
std::vector<int> vec(set.begin(), set.end());
Jest to prosty i elegancki. Ale załóżmy, że mam std::map<std::string,int>
i chcę skopiować wszystkie wartości do std::vector<int>
. Niestety nie ma konstruktora, który akceptowałby zakres iteratorów i funkcję konwertera. Dlaczego nie ma takiego konstruktora? Czy istnieje inny prosty i elegancki sposób na zainicjowanie jednego kontenera o różnych wartościach?
Osobiście wolę operatora "potoku", gdy używam adapterów doładowania "auto range = m | boost :: adaptery :: values; ' – Alan
@Alan Preferuję operator wywołania funkcji dla wywołań funkcji, a jest on krótszy do typu (' | 'kontra'() '). –