【发布时间】:2017-08-09 06:21:50
【问题描述】:
无法理解代码、第二个函数定义或在 main 中调用此函数有什么问题? 我认为,但不确定,调用中的问题,因为没有调用代码编译得很好。编译器 gcc
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template<class T>
void show_element(T ob)
{
cout << ob << " ";
}
template<template<class> class S, class T>
void show_sequence(S<T> sequence)
{
for_each(sequence.begin(), sequence.end(), show_element<T>);
}
int main(int argc, char const *argv[])
{
std::vector<int> v(20, 0);
//here the problem
show_sequence<std::vector<int>, int>(v);
return 0;
}
【问题讨论】:
-
algorithms.cpp:在函数'int main(int, const char**)'中:算法.cpp:29:40:错误:没有匹配函数调用'show_sequence(std::vector
&)' 算法.cpp:29:40: 注意:候选是:算法.cpp:18:6: 注意:模板 class S, class T> void show_sequence(S ) -
将错误信息添加到问题中。
-
我建议您从算法函数中获取提示(例如您使用的
std::for_each),并让该函数取而代之的是迭代器。然后,您不仅可以将该函数用于标准容器,还可以用于数组或指针。 -
我想过这种方法,但这并不是我真正想要的