我想用我的向量探索这些变化。因此我想在向量大小上设置一个点。因此,Visual Studio 将让我在每次大小更改后查看向量中的内容。我怎样才能做到这一点?
在此链接中您可以找到如何设置条件断点。我尝试设置这样的条件: my_vect.size() 变量在
Has changed
事件上(根据 8. 条件断点),但它很糟糕。
my_vect.size() 不是变量,而是函数。看起来像这样:
size_type size() const _NOEXCEPT
{ // return length of sequence
return (this->_Mylast - this->_Myfirst);
}
解决方案如下:使用调试器启动程序。在矢量大小改变之前中断。添加新数据断点。假设你的向量称为
myvec
。然后在地址字段中输入 &myvec._Myfirst
并使用 &myvec._Mylast
添加另一个断点。现在,只要指向向量中第一个或最后一个元素的指针发生变化,调试器就会停止。
补充上面@Marius Bancila的答案,在我的例子中,
std::vector
实现更加复杂,其size
实现是:
_NODISCARD size_type size() const noexcept {
auto& _My_data = _Mypair._Myval2;
return static_cast<size_type>(_My_data._Mylast - _My_data._Myfirst);
}
我怀疑它在最新版本的 Visual Studio 中已被更改,因为我使用的是 Visual C++ 2019 编译工具包。
所以要观看:
第一:
yourVector._Mypair._Myval2._Myfirst
最后:
yourVector._Mypair._Myval2._Mylast
您可以打开
<vector>
标头,并在 std::vector 的每个方法的开头(或结尾)设置一个断点,以更改向量的大小(如 push_back、erase 等)。