【发布时间】:2015-08-03 09:12:24
【问题描述】:
所以我有一个列表类AnimalCollection,它继承自list<Animal>。
现在我正在实现一个名为 removeById(int id) 的方法,该方法从参数中删除与指定的 id 匹配的集合中的某些项目。
我目前的实现如下:
void AnimalCollection::removeById(int id)
{
for (auto it = this->begin(); it != this->end(); it++)
{
if (it->id == id)
this->remove((Animal)it);
}
}
现在,在我的代码的第 6 行,很明显将迭代器转换为当前正在迭代的类型是不明智的。
重点是,我想得到当前被迭代器it迭代的item。
谁知道怎么做?
【问题讨论】:
-
你不能取消引用
it吗?喜欢this->remove(*it); -
您在寻找
*it吗? -
天啊,就是这样,哈哈。我的无知。感谢取消引用部分。拯救了我的一天。
-
忠告:不要发布带有行号的代码。如果有人复制您的代码,首先必须删除数字,然后才能编译和执行。我会相应地编辑您的问题。
-
是的,我实际上希望在此处的代码剪切中可以使用行号,这样可以轻松地在代码中指定一个/一些部分,而不是再次复制和粘贴。但是有人编译它会令人沮丧,因为我没有提供
AnimalCollection和Animal对象的源代码:D 无论如何,非常感谢伙计。