C ++ векторная функция push_back - PullRequest
0 голосов
/ 28 октября 2019

Так что я довольно новичок в кодировании и у меня возникли некоторые проблемы с сохранением пользовательского ввода в вектор с помощью функции push_back. Может кто-нибудь сказать мне, что я делаю неправильно?

  vector<int> user_nums;

     switch(selection){
        case 'P':
        case 'p':
            if(user_nums.empty()){
                cout << "[]- list is empty" << endl;
            }else{
                for(auto nums: user_nums)
                    cout <<"[ " << nums << " ]" << endl;
            }
            break;
        case 'A':
        case 'a':
            int new_num;
            cout << "\nEnter a number you would like to add: ";
            cin >> new_num;
             user_nums.push_back(new_num);
            cout << new_num << " was added" << endl;
            break;

Это цикл do while. Код выполняется просто отлично, проблема в том, что я предлагаю пользователю добавить новый номер, значение которого не сохраняется в векторе. Поэтому, когда пользователь делает выбор для печати чисел, список по-прежнему отображается пустым.

1 Ответ

0 голосов
/ 29 октября 2019

Итак, вам не хватает самых важных разделов вашего кода здесь. Вы действительно должны опубликовать минимальный, воспроизводимый пример . Часто процесс его создания заставит вас найти свою проблему.

В этом случае, однако, это достаточно очевидно. Там есть цикл, оборачивающий весь этот код. vector объявлено внутри цикла. Это означает, что в нижней части цикла vector будет уничтожен, а затем при повторном выполнении цикла будет создан новый пустой vector.

Решение состоит в том, чтобы переместить объявлениеvector вне цикла.

Если я ошибочно догадался о структуре кода, который вы нам не показали, тогда, пожалуйста, следуйте указаниям, с которыми я связан выше.

...