我目前创建了一个指针列表,指向另一个int列表的每个第5个元素。我试图打印出这个指针列表,以确保它指向另一个列表的正确元素。
我已尝试过各种方法来做到这一点,但似乎没有一种方法可行。
for (int* t = pointersList.begin(); t != pointersList.end(); ++t)
{
cout << *t << endl;
}
或
for (int i = 0; i < pointersList.size(); ++i)
{
int* itr;
itr = pointersList.begin()+i;
cout << *itr;
}
我也尝试像向量(cout << pointersList[i];
)那样访问它,但这些似乎都不起作用。
我知道指针指向元素的内存位置(以及我使用*
的位置),但我不知道我何时使用&
或甚至是&*
。
答案 0 :(得分:3)
假设您使用的是标准库容器或具有类似接口的容器,那么begin()
和end()
将返回迭代器,而不是int *。在大多数情况下,代码不应该编译。
答案 1 :(得分:1)
执行以下操作。这应该工作。这将使它打印你的指针值。希望这是你想要的。
for(int a = 0; a < pointersList.size(); a ++)
{
std::list<int*>::iterator i = pointersList.begin();
advance(i, a);
int* totry = *i;
cout << *totry;
cout << ",";
}
答案 2 :(得分:0)
你在这里遇到了严重的问题。我只是给你一些提示,希望你自己在10分钟内找到答案。
在第一个for循环中,您将增加指针本身而不是列表。