• 函数模板


    1.写一个通用函数:作用是在数组里找到和value值相同的值的索引

    template<typename T>
    size_t Find(T& value , T *array,size_t size)
    {
        for(size_t i = 0;i < size;++i)
        {
            if(array[i] == value)
            {
                return i;
            }
        }
        std::cout << "NOT FOUND" << std::endl;
        return -1;
    }
    int main()
    {    int array[] = {1,2,3,4,5};
        int value = 3;
        size_t size = sizeof(array) / sizeof(int);
        size_t index = Find(value,array,size);
    
        if(index!= (-1))
        {
            std::cout << index << std::endl;
        }
        return 0;
    }

    2.函数模板可以特例化

    template<typename T>
    size_t Find(T& value , T*array,size_t size)
    {
        for(size_t i = 0;i < size;++i)
        {
            if(array[i] == value)
            {
                return i;
            }
        }
        std::cout << "NOT FOUND" << std::endl;
        return -1;
    }
    
    template<>
    size_t Find<const char*>(const char *& value , const char **array,size_t size)
    {
        for(size_t i = 0;i < size;++i)
        {
            if(strcmp(array[i],value) == 0)
            {
                return i;
            }
        }
        std::cout << "NOT FOUND" << std::endl;
        return -1;
    }
    int main()
    {const char * arr[] = {"one" , "two" , "three" , "four"};
        const char * value = "oks";
        size_t size = sizeof(arr) / sizeof(char*);
        size_t index = Find<const char*>(value,arr,size);
        if(index != (-1))
        {
            std::cout << index << std::endl;
        }
        return 0;
    }

    记得一定要实现定义好原模板Find();否则特例化会失败;

  • 相关阅读:
    极简Docker和Kubernetes发展史
    什么是健身
    《高效休息法》IT从业者如何高效休息
    《我们赖以生存的隐喻》文学中的面向对象
    sequelize时间自动格式化
    什么是消息队列
    node.js中this指向失效解决
    node.js的async和await
    node.js箭头函数使用
    node.js如何批量赋值
  • 原文地址:https://www.cnblogs.com/boost/p/10356445.html
Copyright © 2020-2023  润新知