C++primer练习16.17-21

练习16.17

::没有,当表示为一种类型的时候用typename

练习16.18

(a)违法,每个模板参数都要有一个typename或者class

(b)非法,模板参数名为掩盖

(c)inline要写在返回类型前

(d)合法

(e)非法,这命名冲突

练习16.19

复制代码
 template<typename T >
 void print(T& a)
 {
     for(typename T::size_type d=0;d!=a.size();++d)
     std::cout<<d<<std::endl;
 }
int main ()
{
    std::vector<int>  a={1,2,3,5,6,7,8,9};
    print(a);
    
}
复制代码

练习16.20

复制代码
template<typename T >
 void print(T& a)
 {
     for(typename T::iterator d=a.begin();d!=a.end();++d)
     std::cout<<*d<<std::endl;
 }
int main ()
{
    std::vector<int>  a={1,2,3,5,6,7,8,9};
    print(a);
    
}
复制代码

练习16.21

复制代码
class DebugDelete{
    public:
        DebugDelete(std::ostream &s=std::cerr):os(s){        }
        template <typename T>void operator()(T*p)const {
            os<<"deleting unique_ptr"<<std::endl;delete p;
        }
    
    private :
        std::ostream &os;
};
复制代码

 

posted @   yddl  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示