gpt4 book ai didi

c++ - 调试列表数组

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:13 25 4
gpt4 key购买 nike

对于这样的代码:

std::list<int> a[3][3];

int myNumber = 0;

for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
a[i][j].push_back(myNumber);
myNumber++;
}
}

调试器的本地窗口显示:

enter image description here

没有简单的方法可以通过并看到:

列表 a[ 0 ][ 0 ] 包含 0

列表 a[ 0 ][ 1 ] 包含 1

列表 a[ 0 ][ 2 ] 包含 2

列表 a[ 1 ][ 0 ] 包含 3等

我只能看到列表 [ 0 ][ 0 ]、[ 1 ][ 0 ] 和 [ 2 ][ 0 ] 包含的内容,但我想查看所有列表包含的内容。我如何在 Visual Studio 2010 中执行此操作?

最佳答案

“没有简单的方法可以查看列表 a[0][2] 包含 2”

你右击某处进入代码,选择Quick Watch,在那里写a[0][2]并通过添加 watch 将您放入“ watch 1”以便您可以看到您的list<int>a[0][2]

当您声明简单 list<int> l; 时, Visual Studio 正确显示它。您可以看到所有元素。

但是当你像这样声明列表数组时:

std::list<int> l[2];
l[1].push_back(3);
l[1].push_back(4);

然后变量l被认为是指向第一个 std::list<int> 的指针因此,即使您将元素插入索引 1 处的列表,Visual Studio 也只会向您显示 l是空列表:some address [0]() .我可以看到 l[1]仅当它在 watch 中时: enter image description here

可能的解决方案是用 [] 替换简单的 C 风格数组 ( std::vector ) :

std::vector<std::list<int> > l;
l.resize(2);

l[1].push_back(3);
l[1].push_back(4);

所以 l不被视为指向第一个 list 的指针了。自 lvector Visual Studio 正确显示所有元素:
enter image description here

关于c++ - 调试列表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com