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;i std::cout是。正如user2717954所评论的,您可以为容器类型本身设置模板:
模板
无效打印顺序(T序列){
for(无符号i=0;i std::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;
}