gpt4 book ai didi

c++ - 如何在不使用列表迭代器的情况下避免“"doesn' t 在所有代码路径上返回一个值”警告?

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

假设我有一个包含值的对象。我希望从对象列表中获取具有特定值的对象的索引。我使用下面的代码来做到这一点,

int MyClass::getIndex(list& somelist, int requiredValue)
{

for( i=0; i != somelist.count(); ++i)
{

if(somelist.at(i)->value() == requiredValue)
return i;
else
continue;
}

return -1;
}

如何在不使用迭代器的情况下避免“不在所有代码路径上返回值”警告?

最佳答案

在任何情况下,您都必须从函数中返回 T。如果列表中可能不存在该值,您可以选择:

  1. 返回默认值(例如指针为 nullptr,整数可能为 -1)
  2. 使用boost::optional<T>
  3. 返回结束迭代器:

    std::list<int>::iterator find_something(std::list<int> &my_list)
    {
    for (auto it = my_list.begin(); it != my_list.end(); ++it)
    {
    if (cond)
    {
    return it;
    }
    }

    return my_list.end();
    }

还有

如果您只想找到某个值的迭代器,请使用 std::find :

auto it = std::find(my_list.begin(), my_list.end(), my_value);

最后

如果您需要按索引访问,请不要使用列表。在这种情况下使用 vector

关于c++ - 如何在不使用列表迭代器的情况下避免“"doesn' t 在所有代码路径上返回一个值”警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150599/

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