草庐IT

通用化

全部标签

c++ - C++ 中的通用容器

我正在尝试创建一个通用容器类型以提供单一的通用接口(interface),并隐藏我正在使用的内部容器,因为它们可能会发生变化。基本上我有返回项目集合的插件,我不希望插件知道我的代码使用的容器类型。谁能给我指出比下面的示例代码更好的方向?templateclassContainer{public://...voidpush(constI&item){if(typeid(C)==typeid(std::priority_queue)){std::priority_queue*container=(std::priority_queue*)&_container;container->pus

c++ - 结构的通用比较运算符

在我的许多单元测试中,我需要比较只有数据成员的简单结构的内容:structObject{intstart;intstop;std::stringmessage;}现在,如果我想写这样的东西:CHECK(object1==object2);我总是要实现:booloperator==(constObject&lhs,constObject&rhs){returnlhs.start==rhs.start&&lhs.stop==rhs.stop&&lhs.message=rhs.message;}编写所有这些比较函数变得乏味,但也容易出错。试想一下,如果我向Object添加一个新的数据成员,但

c++ - 用于应用程序本地部署的 MSVC 2015 通用 CRT

已宣布通用CRT将是一个可重新分发的DLL,这样应用程序本地部署仍然是可能的。我已经安装了VisualStudio2015ExpressEdition,我在SDK目录中寻找ucrtbase.dll,但找不到任何东西。我查看的目录是“C:\ProgramFiles(x86)\MicrosoftSDKs\WindowsKits\10”,但在“Microsoft.UniversalCRT.Debug”下只有CRT的调试版本。我不想从我的系统中复制任何DLL,我总是只打包来自“Redist”目录的文件。因此,例如(与以前版本的MSVC一样),我使用x86构建从“C:\ProgramFiles(

c++ - 使用通用迭代器访问数组数组的元素

访问相邻数组中的元素是否是C++中的未定义行为,如以下代码所示?#include#include#includeintmain(){inta[10][10];static_assert(std::is_standard_layout::value,"!");std::fill(std::begin(*std::begin(a)),std::end(*std::prev(std::end(a))),0);structB{intb[10];};Bb[10];static_assert(std::is_standard_layout::value,"!");std::fill(std::be

c++ - 是否有可能 static_assert lambda 不是通用的?

我实现了一个Visit函数(在变体上),它检查变体中当前事件的类型是否与函数签名(更准确地说是第一个参数)匹配。基于这个不错answer.例如#include#include#includetemplateArgfirst_argument_helper(Ret(*)(Arg,Rest...));templateArgfirst_argument_helper(Ret(F::*)(Arg,Rest...));templateArgfirst_argument_helper(Ret(F::*)(Arg,Rest...)const);templatedecltype(first_argum

c++ - 在具有通用引用参数的函数模板中使用类模板

根据msvc、gcc和clang,以下代码是非法的:templatevoidf(T&&e){std::vectorv;//dosomethingwithvande...}intmain(){inti;f(i);}msvc产量xmemory0(591):errorC2528:'pointer':pointertoreferenceisillegalgcc和clang给出类似的错误消息。请注意,通用引用参数e未使用。编译器显然无法实例化vectorv,提示它被用于引用int:note:seereferencetoclasstemplateinstantiation'std::vector>

c++ - 有没有一些通用的方法来写入和读取配置文件?

我需要我的程序来创建和编辑一个配置文件,其中包含有关一组对象的信息,而不是在每次执行时读取它。我可以使用某种配置样式指南吗?我在Windows上使用C++。 最佳答案 我建议查看boost::property_tree.ThePropertyTreelibraryprovidesadatastructurethatstoresanarbitrarilydeeplynestedtreeofvalues,indexedateachlevelbysomekey.Eachnodeofthetreestoresitsownvalue,plus

c++ - 不转发通用引用会出现什么样的问题?

据我所知,在C++11中,通用引用应该始终与std::forward一起使用,但我不确定如果会出现什么样的问题std::forward未使用。templatevoidf(T&&x);{//Whatifxisusedwithoutstd::forward(x)?}您能否举例说明这种情况下可能出现的问题? 最佳答案 没有这样的规则总是将std::forward与通用引用一起使用。相反,在具有通用引用的函数中到处使用std::forward可能很危险。看看下面的例子:templateautomake_pair(T&&t){returnst

大数据库可视化模版17:大数据可视化通用素材

博主介绍:《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,免费项目配有对应开发文档、开题报告、任务书、PPT、论文模版等项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!在文章末尾可以获取联系方式效果图代码大数据可视化通用素材页面加载中...大数据可视化通用素材模块标题 模块标题 模块标题 19/25 模块标题本月计划 完成/计划 15633/6

c++ - 这是实现通用 operator== 和 operator< 的安全方法吗?

看到thisquestion之后,我的第一个想法是定义通用等价和关系运算符是微不足道的:#includetemplatebooloperator==(constT&a,constT&b){returnstd::memcmp(&a,&b,sizeof(T))==0;}templatebooloperatorusingnamespacestd::rel_ops然后会变得更有用,因为它会被运算符的默认实现完全通用==和.显然,这不会执行成员比较,而是按位比较,就好像该类型只包含POD成员一样。这与C++生成复制构造函数的方式并不完全一致,例如,确实执行成员复制。但是我想知道上面的实现是否真的