Как записать в вектор значения?

188
21 ноября 2021, 18:00

Как записать в вектор значение из cin?

Answer 1

Если вы знаете тип T и количество n нужных значений:

std::copy_n(std::istream_iterator<T>(std::cin), n, std::back_inserter(vector));
Answer 2

Поскольку неизвестн вектор каких типов инициализируем, не известно количество элементов в нем, неизвестно количество и корректность вводимых данных, нужно написать код для общего случая:

#include <iostream>
#include <algorithm> 
#include <iterator>
#include <vector>
template <typename Tp>
void fill_in(std::vector<Tp>& v, std::istream& in)
{
    for (auto& el : v) {
        in >> el;
        if (!in) {
            in.clear();
            in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
        }
    }   
    using Input = std::istream_iterator<Tp>;
    auto back = std::back_inserter(v);
    std::copy(Input(in), Input(), back);    
}
int main() {
    std::vector<int> v(3);
    fill_in(v, std::cin);
    //ипользуем  вектор 
    return 0;
}

функция обрабатывает корректность ввода, но намерения могут быть разными, так что эта обработка может быть разной. А также может быть разным и способ заполнения вектора, относительно необходимости записи в конец или поверх данных. Так что ответ на ваш вопрос, по любому, не может быть однозначным.

READ ALSO
Параллельное программирование С++

Параллельное программирование С++

Задание было, написать программу и распараллелить ее, само задание звучит так : Задана последовательность, состоящая только из символов >, < и -Требуется...

71
Сравнение строк в C++

Сравнение строк в C++

Задали сделать массив структур, в котором ведомости про поезда (по названиям переменных думаю всё понятно)Нужно чтобы программа выводила...

102
Поиск по нескольким полям класса

Поиск по нескольким полям класса

Подскажите, пожалуйста, статьи, примеры кода и тп

105
Параллельное программирование с++,openmp

Параллельное программирование с++,openmp

Задание было, написать программу и распараллелить ее, само задание звучит так : Циклическим сдвигом строки s называется строка sksk+1sk+2…s|s|s1s2…sk-1...

96