在哪种方式搜索容器中的元素的方式更有效

visual Which way to search for elements in a container is more efficient

本文关键字:元素 方式更 有效 方式 搜索      更新时间:2023-10-16

我只是在容器或字符串中迭代/订阅值,以查看这些值是否是我想要的。我只想知道哪种方式(数字1和数字2之间)更有效。

bool isnumber (const char character)
{
    return(character>=48 && character<=57);             
}
template <typename T> bool numbers1(const T &str)
{
    if(!str.empty())
    {
        for (auto it=str.cbegin(); it!=str.cend(); ++it) if (!isnumber(*it)) return false;
        return true;
    }
    else return false;
}
template <typename T> bool numbers2(const T &str)
{
    if(!str.empty())
    {
        for (auto &i : str) if(!isnumber(i)) return false;
        return true;
    }
    else return false;
}

基于c 中的循环范围本质上只是用于使用begin()和end()的循环的速记,通常与迭代器一起使用。在数字2中,编译器扩展了循环以使用str.begin和str.End。编译级别上唯一真正的区别是您的手写迭代器循环使用cbegin()和cend()而不是begin()和end()。

只是进一步阅读:如果您完成实现Begin()和End()的类,那么您将能够在该类上执行基于范围的循环:如何使我的自定义类型与'range--基于循环"?