Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 嵌套模板是否可行?_C++ - Fatal编程技术网

C++ 嵌套模板是否可行?

C++ 嵌套模板是否可行?,c++,C++,我有两个相同的函数,但参数类型不同。是否可以将这些功能合并为一个功能 template<typename T> void print_seq(std::vector<T> sequence) { for (unsigned i = 0; i < sequence.size(); ++i) { std::cout << sequence[i] << ' '; } std::cout << s

我有两个相同的函数,但参数类型不同。是否可以将这些功能合并为一个功能

template<typename T>
void print_seq(std::vector<T> sequence) {
    for (unsigned i = 0; i < sequence.size(); ++i) {
        std::cout << sequence[i] << ' ';
    }

    std::cout << std::endl;
}

template<typename T>
void print_seq(std::deque<T> sequence) {
    for (unsigned i = 0; i < sequence.size(); ++i) {
        std::cout << sequence[i] << ' ';
    }

    std::cout << std::endl;
}
模板
无效打印顺序(标准::矢量序列){
for(无符号i=0;istd::cout是。正如user2717954所评论的,您可以为容器类型本身设置模板:

模板
无效打印顺序(T序列){
for(无符号i=0;istd::cout通过统一函数和使用基本模板行为,实际上可以生成更强大、更灵活的函数

请注意以下代码:

template <typename Container_t>
void print_seq(Container_t seq)
{
    for (const auto& item: seq)
    {
        std::cout << item << ' ';
    }

    std::cout << std::endl;
}
模板
无效打印顺序(容器顺序)
{
用于(常数自动和项目:序号)
{

Std::Cudio>模板无效的PrtutSeq(t序列){ for(un签署i=0;i<序列)(++i){STD::CUT,您可能需要考虑传递迭代器而不是容器本身。就像STL算法是如何做到的。您可能想考虑不调用这个函数<代码> PrimtSeqq 但<代码>操作符。
template <typename Container_t>
void print_seq(Container_t seq)
{
    for (const auto& item: seq)
    {
        std::cout << item << ' ';
    }

    std::cout << std::endl;
}