C ++ 11: vector.size () не обновляется в наблюдателе отладки Eclipse после push_back (), clear () - PullRequest
0 голосов
/ 08 мая 2018

Мой код включает цикл, который добавляет два вектора и отбрасывает один из них.

Код:

for (int j = 0; j < superpixels[orgIndex].size(); j++)
{
    superpixels[dstIndex].push_back(superpixels[orgIndex][j]);
}
superpixels[orgIndex].clear();
std::vector<int>().swap(superpixels[orgIndex]);

Однако отладчик Eclipse считывает, что суперпиксели [dstIndex] .size () все еще остаются неизменными после push_back ().

В первом случае перед выполнением кода у меня orgIndex = 1, dstIndex = 287, суперпиксели [1] .size () = 191, суперпиксели [287] .size () = 1.

После выполнения цикла один раз я вижу, что 191 значение суперпикселей [1] было успешно добавлено к суперпикселям [287] (то есть суперпиксели [287] [191] не являются мусором и равны предыдущему значению суперпиксели [1] [190])

Однако на вкладке «Выражение» в отладчике Eclipse по-прежнему считываются суперпиксели [1] .size () = 191 и суперпиксели [287] .size () = 1 (что должно быть 0, 192 соответственно)

Консоль отладчика Eclipse гласит:

Name : superpixels[1].size()
Details:0
Default:191
Decimal:191
Hex:0xbf
Binary:10111111
Octal:0277

Name : superpixels[287].size()
Details:192
Default:1
Decimal:192
Hex:0xc0
Binary:11000000
Octal:0300

Почему это происходит? Что я должен сделать, чтобы обновить их правильно?

Моя версия Eclipse: Версия: Кислородный релиз (4.7.0) Идентификатор сборки: 20170620-1800

Флаг сборки: -c -fmessage-length = 0 -std = c ++ 11 -pthread

1 Ответ

0 голосов
/ 08 мая 2018

Пожалуйста, создайте Минимальный, Полный и Проверяемый пример

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