我的代码包括添加两个 vector 并丢弃其中一个的循环。

码:

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调试器将在push_back()之后读取superpixels [dstIndex] .size()不变。

在执行代码之前的第一种情况下,我的orgIndex = 1,dstIndex = 287,superpixels [1] .size()= 191,superpixels [287] .size()= 1。

执行一次循环后,我发现191个superpixels [1]值已成功附加到superpixels [287](即,superpixels [287] [191]不是垃圾,等于superpixels [1]的前一个值) ] [190])

但是,Eclipse调试器中的“表达式”选项卡仍读取superpixels [1] .size()= 191和superpixels [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

最佳答案

请创建一个Minimal, Complete, and Verifiable示例

关于c++ - C++ 11:push_back(),clear()之后,vector.size()在Eclipse调试监视程序中未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50228563/

10-11 11:23