C 具有使用模板接受INT和INT []的功能
C++ Have Function Accept types int and int[] using Templates
我有一个现有的代码库,其中有成千上万的foo(int bar[],int type)
调用,其中在功能中创建了许多结构,其中x[i].bar=bar[i]
和x[i].type=type
。
现在有一个边缘情况,我需要为每种x
具有不同类型的情况。因此,foo(int bar[], int type[])
导致x[i].bar=bar[i]
和x[i].type=type[i]
。
我目前已将其作为超载实现,但这导致了许多复制的粘贴代码。有没有一种方法可以使用模板?
您可以制作第三个功能,这是两者的"概括"。它应该接收两个"口味"的参数,并指定您想要的风味。
void foo_internal(int bar[], int type[], int default_type)
{
...
x[i].bar = bar[i];
x[i].type = (type == nullptr) ? default_type : type[i];
...
}
将所有长代码放入其中,然后从两个过载中调用它:
void foo(int bar[], int type[])
{
foo_internal(bar, type, 0);
}
void foo(int bar[], int type)
{
foo_internal(bar, nullptr, type);
}
不认为模板可以解决您的问题,因为模板功能将是这样的
template<typename T>
void foo(int bar[],T type){
...
}
您如何以通用方式设法使用类型作为int或int []?
取而代之的是,您可以通过 foo(int bar [],int [] type)foo(int bar [],int type) foo(int bar [],int type),这样做类似的事情
void foo(int bar[],int type)
{
...
}
void foo(int bar[],int[] type)
{
...
foo(bar,type[i]);
...
}
这样,您应该避免复制代码。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 为什么在全局范围内使用"extern int a"似乎不行?
- 多态性和功能结合
- int(c) 和 c-'0' 之间的区别。C++
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 通过将其中一个模板更改为 muliset 后,我可以在 PBDS 排序集上使用计数功能<int>less_equal<int>
- C++ - 如何使用<int> <int>STL 算法功能在矢量<vector>中找到矢量?
- 返回处理数组的INT功能
- 功能使用INT和Float类型作为C 中的参数过载
- C 具有使用模板接受INT和INT []的功能
- 与int dataype的CIN功能混淆
- 当功能采用签名的int时,将浮点参数施放为未符号
- 将功能与"int main"问题分开(初学者)
- " invalid operands of types 'int' and 'int* const'" 来自功能的错误,来自书
- 呼叫功能时防止int施放
- 对于一对碰撞机会较低的INT的最小哈希功能是什么
- 如何对包含 pair<int,int> 元素的向量进行排序?排序是根据比较功能完成的
- 使用模板"void f(int x[M][N])"时没有匹配功能"f(int[4][4])"?
- 在 SGI STL 的实现中,文件 stl_alloc.h 中模板参数"int inst"的功能是什么?
- 多种模板<int>功能的专业化