Мой код включает цикл, который добавляет два вектора и отбрасывает один из них.
Код:
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