Я пытаюсь ввести 2 числа (int) и 2 вектора (int, string):
int N_num;
int N_dir;
vector<int> v;
vector<string> v1;
std::cin >> N_num;
std::copy(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),std::back_inserter(v));
std::cin >> N_dir;
std::copy(std::istream_iterator<string>(std::cin),
std::istream_iterator<string>(), std::back_inserter(v1));
Мой вклад:
3
1 4 5
4
T M M R
Затем я беру N_dir (= 4) и получаю -858993460 в качестве вывода. Я предполагаю, что первый векторный ввод не завершается, когда я вводю «4» в N_dir. Как мне прекратить вводить вектор и перейти к следующей переменной?
Проблема в том, что первый std::copy
звонок будет читать 4
это должно быть прочитано в N_dir
, Поэтому, когда вы пытаетесь прочитать в N_dir
вместо этого вы читаете первую строку, и операция ввода не будет выполнена и не будет инициализирована N_dir
оставляя это неопределенным.
использование std::copy_n
вместо:
std::copy_n(std::istream_iterator<int>(std::cin), N_num,
std::back_inserter(v));
Других решений пока нет …