访问指针的矢量
Accessing Vector of Pointers?
我正在尝试使用一些简单的代码。我有一个名为"get_object_radius"的函数,它在一个区域中搜索"Creature"的实例,并将它们的指针推到一个向量,然后返回向量。
然后我想循环浏览它们,并在函数外显示它们的名称。我很确定我把它们正确地添加到向量中,但我没有正确地循环指针的向量,是吗?
以下是相关的代码片段(不起作用):
//'get_object_radius' returns a vector of all 'Creatures' within a radius
vector<Creature*> region = get_object_radius(xpos,ypos,radius);
//I want to go through the retrieved vector and displays all the 'Creature' names
for (vector<Creature*>::iterator i = region.begin(); i != region.end(); ++i) {
cout<< region[i]->name << endl;
}
你知道我做错了什么吗?
http://www.cplusplus.com/reference/stl/vector/begin/
您可以取消引用迭代器以访问底层对象。
cout << (*i)->name << endl;
尝试:
//I want to go through the retrieved vector and displays all the 'Creature' names
for (vector<Creature*>::iterator i = region.begin(); i != region.end(); ++i) {
cout << (*i)->name << endl;
}
您需要取消对迭代器的引用(使用*
运算符),然后迭代器将为您提供Creature*
指针。
要获取迭代器所指向的元素,可以取消对它的引用(就像指针一样,但迭代器不一定是指针)。所以你的代码应该是这样的:
// auto is C++11 feature
for (auto it = region.begin(); it != region.end(); ++it) {
Creature *p = *it;
std::cout << p->name << "n";
}
在C++11中,您还可以获得的范围,它在您的视图中隐藏迭代器:
for (Creature *p : region) {
std::cout << p->name << "n";
}
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用指针访问数组中的对象数据成员
- 无法通过指针访问对象的成员
- decltype:使用指针访问类的静态成员
- 是否可以使用指针访问变量以避免直接编辑变量?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++继承从基类指针访问派生类中的非虚拟函数
- 如何使用指针访问成对向量的元素
- 为什么有些库提供无指针访问,而另一些库则不提供
- 如何通过引用或指针访问二维矢量
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 复制堆栈上的成员值或使用指针访问它?
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 从指针访问 Kaguya Lua 状态
- 说明通过指针访问非静态类成员函数
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?