天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 163|回复: 0

在C++中,关于STL container(vector、list...)传入函数模板的问题

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-9 13:40:44 | 显示全部楼层 |阅读模式
    如要设计一个可求得一般container中最大元素的函数,声明给定如下:



    template<typename ElementType, typename ContainerType>
    ElementType maxElement(ContainerType &container)



    我主要不明白以下两点:

    1. 如何传入container 的元素类型ElementType?

    2. 在函数内如何进行对container的元素的操作?(iterator?)

    答:

    1. 如何传入container 的元素类型ElementType?

    maxElement<int, list<int>>(l) ;在调用模板函数时候对其实例化,详见下面代码

    2.是的,通过iterator操作

    需要理解的是模板的实例化是在编译程序之前,由编译器自动展开的,有点类似于宏替换,只不过模板实例化提供了一些高级功能,比如模板参数的推导。

    #include <iostream>
    #include <vector>
    #include <list>
    using namespace std;

    template <typename ElementType, class ContainerType>
    ElementType maxElement(ContainerType &container)
    {
        ContainerType::iterator iter = container.begin();
        ElementType max = *iter;
        for (iter++; iter != container.end(); iter++)
        {
            if (*iter > max)
                max = *iter;
        }
        return max;
    }

    void main()
    {
        list<int> l;
        l.push采用back(10);
        l.push采用back(12);
        l.push采用back(2);
        l.push采用back(44);
        cout << maxElement<int, list<int>>(l) << endl;
    }

     

     

     

     

    在C++中,关于STL container(vector、list...)传入函数模板的问题
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 13:23 , Processed in 0.161187 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表