Процесс C ++ завершен со статусом -1073741819 - PullRequest
0 голосов
/ 07 июня 2019

Я создаю небольшой словарь. Я создал вектор строк для предварительной печати некоторых слов, чтобы взять одно из них в качестве ввода от пользователя и описать ему слово.

Я попытался найти его и попытался установить unsigned int i = 0 в цикле for.

Часть кода, которая делает это, приведена ниже:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    vector<string> word = {"none", "jump fatigue" , "scrim game", "box up", "turtling", "swing", "flickshot", "tracking", "panic build", "cone jump", "ttv", "one-shot", "tagged", "blue", "white", "lasered", "melted", "default", "bot", "stealth", "aggresive", "sweaty", "tryhard", "choke"};
    for(int i = 0; i <= word.size(); i++){
        cout<<i<<")"<< word[i] << endl;
    }
    return 0;
}

Он печатает безо всякой ошибки и в конце выполнения кода останавливается на некоторое время и заканчивается, Process terminated with status -1073741819(0 minute(s), 4 second(s)) тогда как он должен заканчиваться на 0

При отладке кода я получаю warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

1 Ответ

1 голос
/ 07 июня 2019

Ваша проблема в цикле i <= word.size(). Это должно быть <. Последний индекс будет на единицу меньше размера, так как первый индекс равен 0.

Я бы рекомендовал, по крайней мере, использовать size_t в цикле for, чтобы получить лучший тип

for (std::size_t i = 0; i < word.size(); i++) {

хотя более чистым способом итерации был бы цикл for на основе диапазона

for (auto& w : word) {
    std::cout << w << '\n';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...