当前位置:  开发笔记 > 编程语言 > 正文

适用于STL容器的简单C++模板

如何解决《适用于STL容器的简单C++模板》经验,为你挑选了3个好方法。

我需要一个这样的模板,它可以很好地工作

template  void mySuperTempalte (const container myCont)
{
    //do something here
}

那么我想专门为std :: string上面的模板,所以我想出了

template  void mySuperTempalte (const container myCont)
{
    //check type of container
    //do something here
}

哪个不起作用,并抛出一个错误.我想让第二个例子起作用然后如果可能我想在模板中添加一些代码以检查是否使用了std :: vector/std :: deque/std :: list,在每个中执行不同的操作案件.所以我使用了模板,因为99%的代码对于矢量和deques等都是相同的.



1> sep..:

专业化:

template<> void mySuperTempalte(const std::string myCont)
{
    //check type of container
    //do something here
}

专门用于矢量:

template void mySuperTempalte (std::vector myCont)
{
    //check type of container
    //do something here
}

专门为deque:

template void mySuperTempalte (std::deque myCont)
{
    //check type of container
    //do something here
}



2> Konrad Rudol..:

你试过模板typename参数吗?语法有点奇怪,因为它模拟了用于声明这样一个容器的语法.有一篇很好的InformIT文章更详细地解释了这一点.

template