如何返回列表元素c ++

时间:2018-02-25 12:42:12

标签: c++

我有这个:

Item findItem(std::string name)
    {
        for(std::list<Item*>::iterator it = listItem.begin(); it != listItem.end(); it++)
        {        
            if((*it)->name() == name){
                return ___;
            }   
        }

    }

如何正确返回元素?

2 个答案:

答案 0 :(得分:4)

  • it是迭代器
  • *itItem*,是it目前所指的容器的元素
  • **it是您可能希望返回的实际Item

如果找不到该元素,请不要忘记抛出异常或其他内容!到达返回除void之外的其他内容的函数的末尾,而不返回void之外的其他内容,将程序用未定义的行为填充(除非函数为main,在这种情况下return 0假设1}}。

另外,请考虑一下是否需要/想要存储指针;考虑使用std::list<Item>。如果您坚持使用指针,请检查以确保正确管理其生命周期。当您发现自己没有时,请切换到智能指针。然后再考虑一下确实是否需要/想要存储指针。

答案 1 :(得分:2)

return **it;

正是您要找的。