-
Notifications
You must be signed in to change notification settings - Fork 0
/
class_template.h
83 lines (71 loc) · 1.68 KB
/
class_template.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#ifndef CLASS_TEMPLATE_H
#define CLASS_TEMPLATE_H
#include <iostream>
#include <vector>
#include <map>
using namespace std;
template <typename T, typename U>
class ClassTemplate {
private:
public:
ClassTemplate();
~ClassTemplate();
void printVector(vector<T> &vec);
void printMap(map<T, vector<U>> &mapeamento);
void printMapForEach(map<T, vector<U>> &mapeamento);
};
template <typename T, typename U>
ClassTemplate<T, U>::ClassTemplate() {}
template <typename T, typename U>
ClassTemplate<T, U>::~ClassTemplate() {}
/**
* @brief imprime um vector do tipo T
*
* @tparam T
* @tparam U
* @param vec
*/
template <typename T, typename U>
void ClassTemplate<T, U>::printVector(vector<T> &vec) {
for (T val : vec)
cout << val << " ";
cout << endl;
}
/**
* @brief imprime um map atravez de um template
* o map possui uma chave com um unico tipo T, ou seja, nao eh tupla
* o valor eh um vector de tipo U
*
* @tparam T
* @tparam U
* @param mapeamento
*/
template <typename T, typename U>
void ClassTemplate<T, U>::printMap(map<T, vector<U>> &mapeamento) {
for (auto itr = mapeamento.begin(); itr != mapeamento.end(); ++itr) {
cout << itr->first << endl;
for (U dado : itr->second) {
cout << dado << " ";
}
cout << endl;
}
cout << endl;
}
/**
* @brief imprime um map atravez de um template
*
* @tparam T
* @tparam U
* @param mapeamento
*/
template <typename T, typename U>
void ClassTemplate<T, U>::printMapForEach(map<T, vector<U>> &mapeamento) {
for (const auto &[key, value] : mapeamento) {
cout << key << endl;
for (U dado : value) {
cout << dado << " ";
}
cout << endl;
}
}
#endif