当前位置: 首页 > 知识库问答 >
问题:

C++如何将一个通用函数与多个unorder_map模板绑定并称为clear函数

钱季
2023-03-14

我有一个要求:系统定义多个类似于unorder_map的数据,例如。

  std::unorder_map< int,  int>  int_map;
  std::unorder_map< int,  double>  double_map;
  std::unorder_map< string,  string>  string_map;
  ...
  std::unorder_map< string, vector<string> >  string_string_map;

那么我们希望有一个统一的回调函数。当回调函数调用时,映射指针将传递给类似函数

undo_clear_data(&int_map);

or :
undo_clear_data(&string_map);

void undo_clear_data(void *data)
{
   data->clear();
}

在undo_clear_data函数中,我们需要知道它是什么确切的映射,并将其称为clear函数。对执行有何建议

共有1个答案

鞠安民
2023-03-14

当然不是这个:

void undo_clear_data(void *data)
{
   data->clear();
}

使用void*进行类型擦除应该是最后的手段。您不能对void*调用clearvoid没有可以调用的方法(它甚至不是类型,而是表示缺少类型)。

正如注释中所建议的,您可以将函数设置为模板(我更改了名称,因为undo_clear_data将意味着clear被撤消,这与调用clear)相反):

template <typename T>
void clear_data(T& t) {
    t.clear();
}

在undo_clear_data函数中,我们需要知道它是什么确切的映射

在函数内部,映射的类型是T,您通过TypeNameT::Value_Type获得值类型。

 类似资料:
  • 我在这里准备了一个简单的道场:http://dojo.telerik.com/iQERE 脚本: 我在另一个数组中有一个数组,我想用剑道模板以表格/网格的形式呈现它。第一个数组的项是行,内部数组的项是列。 我在谷歌上搜索并发现了这种技术:模板中的模板 问题是: 1) 如何绑定嵌套数组项的值? 我尝试,但它不起作用。 我认为,因为使用这种技术,这个模板的“真实数据”是外部数组,而不是内部数组! 尝试

  • 问题内容: 表: 有了答案,我在这里得到了利用$ compile的这种方式 现在,当单击按钮时,我什至调用一个模态,并命令对象使用ng-model 感谢您的帮助,它运作良好。 问题答案: 编辑 :添加了用于演示 $ compile 用法的代码段 在html中,只有一个用于初始化应用程序的标签和一个用于初始化控制器的div。 在controller中,两个链接被创建为简单字符串,但分别具有两个,然后

  • 本文向大家介绍C ++ STL中的多集clear()函数,包括了C ++ STL中的多集clear()函数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中multiset::clear()函数的工作原理,语法和示例。 什么是C ++ STL中的多重集? 多重集是类似于集合容器的容器,这意味着它们以键的形式(类似于集合)以特定顺序存储值。 在多集合中,将值标识为与集合

  • 我试图编写一个通用的obj工厂,使用可变模板调用各种类的构造函数。代码如下: 在大多数例子中,变量arg总是这样写“Args” 错误:没有可行的转换从'__bind( 在移除“ 但我不知道为什么?

  • 问题内容: 给定一个功能: 您可以用两种方式来称呼它: 第一个返回30,第二个返回一个对象。 您如何检测 在函数本身内部 调用 该函数的方式 ? 无论您采用哪种解决方案,它都必须与以下调用一起使用: 当前所有解决方案都认为将该方法称为构造函数。 问题答案: 我认为[ES2015之前]您想要的东西是不可能的。函数内根本没有足够的信息来进行可靠的推断。 查看ECMAScript 3rd Edition

  • 多个表单如何共用一个函数,希望不更改每个id名。请问可以实现吗?

  • 我想具体化一个函数,我只有写好像不对 这样写好像不对

  • 本文向大家介绍C++函数模板与类模板实例解析,包括了C++函数模板与类模板实例解析的使用技巧和注意事项,需要的朋友参考一下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛