Предположим, у меня есть вектор строки, который содержит имя, и теперь я хочу создать вектор класса Athlete из этих имен векторов. Так как я могу создать один без используя цикл?Создайте вектор объекта из другого вектора строки
Вот мой Athlete
класс:
class Athlete{
public:
Athlete(string name, int number);
private:
string name;
int number, time;
};
Вот моя попытка с помощью цикла, предположим, что вектор имен уже содержит некоторые элементы:
vector<string> names;
vector<Athlete> athletes;
for(auto i = names.begin(); i != names.end(); i++)
athletes.push_back(Athlete(*i, i - names.begin() + 1));
Но теперь я хочу, чтобы создать вектор спортсменов без используя цикл. Сначала я думал, что буду использовать generate, но тогда объект функции не может ссылаться на имена векторов. Итак, какую функцию я должен использовать?
Какая утечка. Почему не просто 'athletes.push_back (Athlete (* i, i - names.begin() + 1));'? Или 'emplace_back', что угодно. – LogicStuff
Извините, вы правы. Я этого не заметил. Благодарю. – Henry
Вы всегда можете ['std :: transform()'] (http://en.cppreference.com/w/cpp/algorithm/transform). –