码迷,mamicode.com
首页 > 其他好文 > 详细

模板类型的例子

时间:2014-08-31 21:22:21      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   使用   io   ar   for   div   

16.4 编写行为类似标准库find算法的模板。函数需要两个模板类型参数,一个表示函数的迭代器参数,另一个表示值的类型。使用你的函数在一个vector<int>和一个list<string>中查找给定值。

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

template <typename T1,typename T2>
T1 find1(T1 begin,T1 end,const T2 &value)
{
    if(find(begin,end,value)!=end)
        return find(begin,end,value);
    else
        return end;
}
int main()
{
    vector<int> vec={1,3,4,5,6,7,8};
    list<string> lst={"w","a","m","fdhs","difi","aa"};
    cout<<*find1(vec.begin(),vec.end(),8)<<endl;
    cout<<find1(vec.begin(),vec.end(),8)-vec.begin()<<endl;
    cout<<*find1<list<string>::iterator,string>(lst.begin(),lst.end(),"a")<<endl;
    cout<<(find1<list<string>::iterator,string>(lst.begin(),lst.end(),"a")==lst.end()?"no exist":"exist")<<endl;
    return 0;
}

 

16.5print函数编写模板版本,它接受一个数组的引用,能处理任意大小、任意元素类型的数组。

#include<iostream>
#include<string>
using namespace std;

template<typename T,size_t n>
void print(T (&arr)[n])
{
    for(auto elem:arr)
        cout<<elem<<" ";
    cout<<endl;
}

int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,0};
    string str[5]={"a","b","c","d","e"};
    char ch[3]={a,b,c};
    print(arr);
    print(str);
    print(ch);
}

16.7 编写一个constexpr模板,返回给定数组的大小。

#include<iostream>
#include<string>
using namespace std;

template<typename T,size_t n>
void print(T (&arr)[n])
{
    for(auto elem:arr)
        cout<<elem<<" ";
    cout<<endl;
}

template<typename TT,size_t sz>
constexpr size_t rtsize(TT (&)[sz])
{
    return sz;
}
int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,0};
    string str[5]={"a","b","c","d","e"};
    char ch[3]={a,b,c};
    print(arr);
    print(str);
    print(ch);
    cout<<rtsize(arr)<<endl;
    cout<<rtsize(str)<<endl;
    cout<<rtsize(ch)<<endl;
}

 

模板类型的例子

标签:style   blog   color   os   使用   io   ar   for   div   

原文地址:http://www.cnblogs.com/wuchanming/p/3948086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!