【问题标题】:Need Help In Making C++ Template For Printing Vector<pair<int,int>>需要帮助制作用于打印矢量的 C++ 模板<pair<int,int>>
【发布时间】:2021-06-21 16:54:11
【问题描述】:

我已经创建了一个打印矢量的模板,见下文

template<class T> void  _print(vector<T> v1){cerr<<"[ ";for(T i:v1){_print(i);cerr<<" ";}cerr<<"]";}

但问题是我也想为打印矢量创建模板> 但我不知道如何为pair 创建新的模板,它使用相同的宏调试()。

我使用的代码。

#include<bits/stdc++.h>
#define vi vector<int>
#define ui unordered_set<int>
#define all(v) v.begin(),v.end()
#define lower(s) transform(all(s) ,s.begin(),::tolower)
#define upper(s) transform(all(s),s.begin(),::toupper)
#define sortv(v) sort(all(v))
#define rev(v) reverse(all(v))
#define f first
#define s second
#define int long long int
#define float double 
#define endl "\n"
#define null NULL
using namespace std;
#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x << " ";_print(x); cerr<<endl;
#else
#define debug(x)
#endif

void _print(int a){cerr<<a;}
void _print(float a){cerr<<a;}
void _print(char a){cerr<<a;}
void _print(bool a){cerr<<a;}
void _print(string a){cerr<<a;}

template<class T> void  _print(set<T> s1){cerr<<"[ ";for(T i:s1){_print(i);cerr<<" ";}cerr<<"]";}
template<class T> void  _print(vector<T> v1){cerr<<"[ ";for(T i:v1){_print(i);cerr<<" ";}cerr<<"]";}

int32_t main()
{
#ifndef ONLINE_JUDGE
    freopen("Error.txt","w",stderr);
#endif



    return 0;
}

【问题讨论】:

    标签: c++ c++14


    【解决方案1】:

    您的问题是参数类型对没有_print 的重载,因此T = std::pair&lt;int,int&gt; 的模板实例化无法编译。

    如果你声明另一个函数,如下所示,它应该可以工作。

    void _print(const std::pair<int, int> &a) {
      cerr<< "{"; _print(a.first); cerr << ", "; _print(a.second); cerr << "}";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 2023-03-12
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2011-01-02
      • 2014-12-29
      相关资源
      最近更新 更多