C ++ vector: утверждать при использовании индекса векторного массива -1? - PullRequest
1 голос
/ 03 июня 2011

По сути, у меня есть код, который имеет вектор неупорядоченных слов, вектор2, в котором хранится их приоритет (и имеет свою позицию), вектор3 с приоритетом, отсортированным от наибольшего к низшему.

Я хочу создать вектор 4 со строками, которые имеют наивысший приоритет.Предупреждение bool относится к повторяющимся приоритетам.

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

Вот оригинальный код:

bool warning = true;
vector<string> vector4;

for (int a = 0; a < vector2.size(); a++)
{
    for (int q = 0 ; q < vector2.size(); q++)
    {
    if (warning && vector2[a] == vector3[a-1] && a>0)
            {
                   warning = false;
            }
     if (warning && vector2[q] == vector3[a])
             {
                     vector4.push_back(vector1[q]);
             }
       warning = true;
    }

}

Вот код после исправления, используя ответы, приведенные ниже:

bool warning = true;
vector<string> vector4;

for (int a = 0; a < vector2.size(); a++)
{
    for (int q = 0 ; q < vector2.size(); q++)
    {
    if (a > 0 && warning && vector2[a] == vector3[a-1])
            {
                   warning = false;
            }
     if (warning && vector2[q] == vector3[a])
             {
                     vector4.push_back(vector1[q]);
             }
       warning = true;
    }

}

Решено!

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

в вашем цикле вы делаете: vector3 [a-1]

в первой итерации a = 0, давая vector3 [-1]

Это то, что заставляет его утверждать.

2 голосов
/ 03 июня 2011
warning && vector2[a] == vector3[a-1]

Даст вам утверждение в первом цикле, потому что a == 0, поэтому a-1 == -1, что является недопустимым индексом.

1 голос
/ 03 июня 2011

Мне кажется, в первом экземпляре вашего цикла это утверждение звучит так: если (предупреждение && vector2 [a] == vector3 [a-1]) когда == 0 - Таким образом, вы оцениваете вектор [-1] на RHS ==

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...