草庐IT

三元组

全部标签

c++ - 将 C++ 字符串解析为元组

我正在开发一个简单的CSV解析器,它将文件的行存储在一个元组中。如果不是因为文件中各行的条目数及其类型都是变量,这将是一项简单的任务。因此,这些行可能是这样的:1,2.2,你好,18,世界解析器应该能够像这样工作:ifstreamfile("input.csv");SimpleCSVParserparser(file);当我尝试实现一个函数来解析实际行时,事情变得复杂了。我仍然没有找到一种方法来从参数列表中提取下一个类型以在调用file>>var之前声明变量。我还需要在循环中执行此操作,以某种方式从每次迭代的结果构建一个元组。那么如何使用纯C++11将字符串解析为元组?我试过这个:te

c++ - 创建一个包含可变类型的元组

今天我试图在编译时创建一个有点具体(至少对我而言)的元组。我有一些基本的结构,比方说:structFoo1{intdata;};structFoo2{intdata;};structFoo3{intdata;};还有另一个结构,但带有一些模板内容:templatestructMetadata{usingtype=T;std::bitsetbitset;};所以现在我想创建这种元组:constexprstd::tuple,Metadata,Metadata>test{{0},{0},{0}};但以一种自动的方式,更像是:templateconstexprautomake_metadata

c++ - 将函数的返回值存储在元组中

考虑#includetemplateautoexecute(F...f){returnstd::make_tuple(f(0)...);}intfoo(int){return5;}intbar(int){return3;}intmain(){autotuple=execute(foo,bar);}有什么好的解决方法可以让bar返回void?我试过这个,但它不会编译:#includestructVoid{};templateTcheck(Tn){returnn;}Voidcheck(void){returnVoid{};}templateautoexecute(F...f){return

c++ - 使用 "if constexpr"防止元组越界

以下代码在GCC和Clang下编译良好,但在VisualStudio(/std:c++latest)的最新更新中停止工作:#includetemplatevoidcheck_tuple(T...types){ifconstexpr(pos>::type;}}intmain(){check_tuple(1.0,1.0);check_tuple(1.0,1.0);}在最新版本的VisualStudio(/std:c++latest)中,编译失败,元组索引越界(std::tuple_element>)。是否可以像这样使用constexpr来防止元组越界? 最佳答案

c++ - 在 C++14 中使用 hana::transform 转换元组内部的类型

我正在尝试使用Boost的hana::transform更改hana::tuple中的类型.例如,假设我有constexprautosome_tuple=hana::tuple_t;我想生产constexprautotransformed_tuple=hana::tuple_t,std::vector,std::vector>;尝试1解决方案对我来说似乎很简单:使用hana::transform并使应用函数返回hana::type_c>.但是,我无法完成这项工作:constexprautotransformed_tuple=hana::transform(some_tuple,[](a

c++ - 我如何调整 erase-remove 习语来处理 vector 元组?

我有一个包含成员j、k和l的元组vector。我正在尝试调整erase-remove习语,以便在.k成员的值满足特定条件时我可以删除整个元组。我尝试使用标准的.erase(removeif())方法,其中谓词引用元组成员位置,但被告知相关vector类没有成员“k”。vec_list_iter_exp_out.erase(std::remove_if(vec_list_iter_exp_out.begin(),vec_list_iter_exp_out.end(),vec_list_iter_exp_out.k我希望如果vec_list_iter_exp_out包含以下假设值:vec_

c++ - 具有三元的简单 C++11 constexpr 阶乘超出了最大模板深度

如果我使用专门化编写编译时阶乘函数,则以下代码就足够了,并将正确提供120作为fact1()的结果:templateconstexprsize_tfact1(){returnN*fact1();}templateconstexprsize_tfact1(){return1;}但是,对于单个函数体和三元运算符,如以下代码所示,G++4.7和Clang++3.2都超过了它们的最大模板实例化深度。看来1永远不会从fact2返回.为什么fact2()的定义是这样的?不返回120?templateconstexprsize_tfact2(){returnN==0?1:N*fact2();}

c++ - 简化的元组实现

我正在一个没有任何标准库的平台上工作,而且我正在尝试实现“类元组”类型。我只需要按类型获取的工具,但我希望编译器能够如果类型不存在,则发出static_assert。无需断言在重复的类型上,但这会很好......这是我尝试过的:templatestructSimpleTuple;templatestructSimpleTuple{SimpleTuple(){}};templatestructSimpleTuple{typedefHeadHeadType;typedefSimpleTupleVATailType;SimpleTuple(Headhead,Tail...tail):data

c++ - 是否可以使用三元运算符 "?"来填充 C/C++ 中的数组列表?

这可能是一个愚蠢的问题。我正在修改别人开发的代码。我需要根据逻辑变量ThreeDim详细说明一些字符数组的值。我正在尝试这样做但没有成功。intVarNumber=ThreeDim==1?3:2;constchar*VarList[]=ThreeDim==1?{"X","Y","Z"}:{"X","Y"};但是编译器给我这样的错误error:expected‘;’before‘}’tokenerror:initializerfailstodeterminesizeof‘VarList’由于下游要求,VarList需要是constchar*。它的大小应该是VarNumber。谢谢

Python设置与元组查找。在元组中查找O(1)吗?

最近,我在Python上看到了一个问题这里1:pythonif语句和逻辑操作员问题。有评论中有人给出答案,可以这样做:1in(1,2,3)要检查一个物品集中是否存在。但根据我的说法,这应该更快得多1in{1,2,3}。正如您在讨论中看到的那样,声誉很高的人继续说()对于固定尺寸输入,更快。并且查找速度比{}。我在这里问它,因为我想知道自己的理解是正确的,而且我也不了解()存在fiexd-size或者variablesize。我只是要求在这个原始问题中提出一种反对,这样我就可以纠正自己是否错了,但用户坚持清除我的计算机科学知识的基础知识,而无需对他的论点进行单一的反对,lookupinTuple