Новый вектор
Иногда нужно знать не только сколько элементов удовлетворяют условию, но и какие именно. Тогда начните с пустого вектора и добавляйте в него каждый подходящий элемент с помощью push_back():
std::vector<int> temperatures = {18, 24, 27, 15, 31, 22, 29};
std::vector<int> hot = {};
for (int temperature : temperatures) {
if (temperature >= 25) {
hot.push_back(temperature);
}
}
std::cout << "Жарких дней: " << hot.size() << std::endl;
for (int temperature : hot) {
std::cout << temperature << " ";
}
std::cout << std::endl;Жарких дней: 3
27 31 29 std::vector<int> hot = {}; создаёт вектор без элементов. Можно написать и просто std::vector<int> hot;: в отличие от int без значения, вектор без значения не содержит мусора, он пуст. Каждый push_back() добавляет один элемент в конец, поэтому новый вектор сохраняет порядок исходного. Исходный вектор остаётся таким, каким был, а hot.size() показывает, сколько элементов вы собрали. Чтобы вывести новый вектор, нужен ещё один цикл, потому что std::cout << hot не работает.
Значения в новом векторе не обязаны быть теми же. Этот цикл строит вектор, в котором каждое число удвоено:
std::vector<int> numbers = {3, 8, 5};
std::vector<int> doubled = {};
for (int number : numbers) {
doubled.push_back(number * 2);
}
for (int number : doubled) {
std::cout << number << " ";
}
std::cout << std::endl;6 16 10 Создавайте новый вектор перед циклом, как сумму или счётчик. Внутри цикла каждая итерация начинала бы с нового пустого вектора, а после цикла вектора вообще не существовало бы.
Задание
- 1
Создайте пустой вектор
evenNumbersтипаstd::vector<int>. Затем пройдите поnumbersи добавьте каждое чётное число вevenNumbersс помощьюpush_back(). Число чётное, когдаnumber % 2 == 0. - 2
После этого цикла выведите элементы
evenNumbersв одной строке, после текстаЧётные:и через пробелы, так же, как программа выводит все числа. В выводе получитсяЧётные: 12 30 18 4. - 3
В следующей строке выведите, сколько чётных чисел, с помощью
evenNumbers.size():Количество: 4.