我的代码包含一个循环,该循环附加两个向量并丢弃其中一个向量。
代码:
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()之后superpixelsdstIndex.size()仍然没有改变。
在代码执行前的第一种情况下,orgIndex = 1,dstIndex = 287,superpixels1.size() = 191,superpixels287.size() =1。
在循环执行一次之后,我看到superpixels1的191值已经成功地附加到超像素287
然而,Eclipse调试器中的'Expression‘选项卡仍然显示为superpixels1.size() = 191和superpixels287.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版本是: Version: Oxygen Release (4.7.0) Build :20170620-1800.
构建标志:-c -fmessage-length=0 -std=c++11 -pthread
发布于 2018-05-08 22:21:26
https://stackoverflow.com/questions/50228563
复制相似问题