我有一个名为MySet
的自定义集,一个整数应该传递给MySet
的构造函数来构造它。我想编写一个函数来初始化std::vector
MySet
。
我希望此功能还能够初始化std::vector
std::set <int>
。
类似的东西:
template<typename S>
void init(std::vector<S> &v, int n){
v.reserve(n);
for(int i=0; i<n; i++){
if(std::is_same<S, MySet>::value){
v.push_back(S(42));
}
else{
v.push_back(S());
}
}
return;
}
是否可以在不使用init
上的函数重载的情况下解决此问题?
答案 0 :(得分:3)
为您的类型编写创建函数:
template <class S>
S create()
{
return S();
}
template <>
MySet create<MySet>()
{
return MySet(42);
}
template<typename S>
void init(std::vector<S> &v, int n){
v.reserve(n);
for(int i=0; i<n; i++){
v.push_back(create<S>());
}
}
答案 1 :(得分:1)
如果你的类是可复制构造的,你不需要这个init()函数,只需使用d3['Option1'] = pd.Categorical(d3['Option1'],['min','default','max'], ordered=True)
d3['Option2'] = pd.Categorical(d3['Option2'],['min','default','max'], ordered=True)
d3 = d3.sort_values(['country','Option1', 'Option2' ])
print d3
country region measure Option1 Option2
4 A R1 86 min min
13 A R2 72 min min
22 A R3 36 min min
5 A R1 86 min default
14 A R2 72 min default
23 A R3 36 min default
3 A R1 86 min max
12 A R2 72 min max
21 A R3 36 min max
7 A R1 86 default min
16 A R2 72 default min
25 A R3 36 default min
8 A R1 86 default default
17 A R2 72 default default
26 A R3 36 default default
6 A R1 86 default max
15 A R2 72 default max
24 A R3 36 default max
1 A R1 141 max min
10 A R2 215 max min
19 A R3 473 max min
2 A R1 141 max default
11 A R2 215 max default
20 A R3 473 max default
0 A R1 141 max max
9 A R2 215 max max
18 A R3 473 max max
31 B R1 79 min min
40 B R2 88 min min
49 B R3 54 min min
32 B R1 79 min default
41 B R2 88 min default
50 B R3 54 min default
30 B R1 384 min max
39 B R2 439 min max
48 B R3 172 min max
34 B R1 79 default min
43 B R2 88 default min
52 B R3 54 default min
35 B R1 79 default default
44 B R2 88 default default
53 B R3 54 default default
33 B R1 384 default max
42 B R2 439 default max
51 B R3 172 default max
28 B R1 79 max min
37 B R2 88 max min
46 B R3 54 max min
29 B R1 79 max default
38 B R2 88 max default
47 B R3 54 max default
27 B R1 384 max max
36 B R2 439 max max
45 B R3 172 max max
构造函数的两个参数版本:
std::vector