В задаче написано с помощью "Цикла для контейнера" заполнить контейнер единицами. Возник вопрос, что это такое? (Как оказалось, это не цикл for)
Если говорится о заполнении, то он уже имеет размер, поэтому:
std::vector<int> list(20);
// 20 единиц
list.assign(20, 1);
Метод практически проходит по каждому элементу и выполняет присваивание, но понятие "цикл контейнера" придуманное.
Варант:
std::list<int> list(20, 1);
Создает сразу такой список: это конечно эффективней
Но под названием "цикл для контейнера ", подходит:
for (std::vector<int>::iterator first = list.begin(); first != list.end(); ++first)
*first = 1;
Или скорее вам нужно это:
for (int &elem : list){
static int i = 0;
elem = ++i;
}
Заполнили возрастающими значениями, начиная от 1
std::generateС этой конструкцией вы можете описать довольно много разных вариантов заполнения:
Заполнить массив единицами:
std::generate(std::begin(mas), std::end(mas),
[](){ return 1; }
);
Заполнить массив возрастающими значениями, начиная с -4:
int initial = -4;
std::generate(std::begin(mas), std::end(mas),
[&initial](){ return initial++; }
);
Заполнить массив возрастающими значениями, начиная с -10, с шагом 3:
int initial = -10;
std::generate(std::begin(mas), std::end(mas),
[&initial](){ initial += 3; return initial - 3; }
);
Подробнее можно почитать на cppreference : https://en.cppreference.com/w/cpp/algorithm/generate .
Также обратите внимание на методы std::fill и std::iota, ниже в комментариях AR Hovsepyan про них упомянул. Если возможно - лучше использовать их, это правильнее, несмотря на то, что std::generate более универсален.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости