草庐IT

lambda表达式

全部标签

c++ - gcc 相对于在新表达式中解析 type-id 发出错误

这个程序#includeintmain(){conststd::size_tN1=2;conststd::size_tN2=3;int(**p)[N1]=new(int(*[N2])[N1]);}doesnotcompile使用编译器C++gccHEAD10.0.020190。编译器报错prog.cc:Inlambdafunction:prog.cc:8:40:error:expected'{'before')'token8|int(**p)[N1]=new(int(*[N2])[N1]);|^prog.cc:Infunction'intmain()':prog.cc:8:34:err

c++ - 是否有一个 C/C++ 库可以让你找出一组表达式是否互斥?

我正在为我设计的数据流编程语言编写编译器。我非常喜欢它的一个功能是您可以表达以下内容:x3;x这意味着:x3);为了实现这一点,编译器需要知道:((b>3)&&(b((b>3)||(b是否有任何人知道的C/C++库能够验证这2个语句(以及更复杂的语句)?或者是否有任何人可以通过网络获得任何关于类似系统的详细信息的论文?或者有人可以描述一种可能的方法吗?谢谢,丹尼尔 最佳答案 我认为您需要一小组简单的规则来告诉您两个表达式是相等的还是完全不同的。让我们从最简单的开始:b>3和b检查它们是否相等很容易:b>3和b>3相等,b>3和b显然

c++ - 如何使用 boost.lambda 和 boost.range 从容器中进行选择?

在C#和Linq中,我会写:myContainer.Select(o=>o.myMember);我不确定C++/lambda/range的语法应该是什么。我只是试图将某种对象类型的容器适配为字符串容器,以便我可以将它传递给boost::algorithm::join。我试过类似的东西:usingnamespaceboost::adaptors;usingnamespaceboost::lambda;stringresult=join(myContainer|transformed(_1.myMember),",");但显然那是行不通的,否则我就不会在这里。;)阅读后我正在使用转换:ht

c++ - 用于 SIMD/SSE 表达式延迟计算的 C/C++ 库

intel-MKL等库或amd-ACML为vector上的SIMD操作提供更简单的接口(interface),但我想将几个函数链接在一起。是否有现成的库,我可以在其中为像这样的表达式注册解析树log(tanh(x)+exp(x))然后对数组的所有成员进行评估?我想避免的是制作tanh(x)的临时数组,exp(x)和tanh(x)+exp(x)通过为tanh()调用mkl或acml函数,exp()和+.我可以手动展开循环并直接使用sse指令,但想知道是否有C++库可以为您执行此操作,即1.HandlesSIMD/SSEfunctions2.Allowsbuildingofparsetre

c++ - 寻找可以简化的过于复杂的 boolean 表达式的工具?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion是否有任何C++代码解析器寻找可以使用boolean代数简化的boolean表达式?我知道编译器已经这样做了,但是如果有一个工具可以提供这样的东西,这样就可以真正提高代码的可读性,那就太好了。

c++ - 在 C++ 中使用 lambda 和 back_inserter 生成_n

我最近开始使用lambda表达式等新的C++11功能来使我的代码更易于阅读。在这个例子中,我想生成一个随机排序的数字[0到n]的vector。我有一些类似于下面的代码#include#include#includeusingnamespacestd;void_generateRandomIndices(vector&indices,constunsignedint&n){indices.clear();unsignedinti=0;generate_n(back_inserter(indices),n,[&i]()->unsignedint{returni++;});random_sh

c++ - 解析表达式语法中的左分解

我正在尝试为允许以下表达式的语言编写语法:fargs形式的函数调用(注意:没有括号!)a+b形式的添加(和更复杂的表达式,但这不是重点)例如:f42=>f(42)42+b=>(42+b)f42+b=>f(42+b)语法是明确的(每个表达式都可以完全以一种方式解析)但我不知道如何将此语法编写为PEG,因为两个产品可能以相同的标记开始,id.这是我错误的PEG。我怎样才能重写它以使其有效?expression::=call/additioncall::=idaddition*addition::=unary(('+'unary)/('-'unary))*unary::=primary/'(

矩阵表达:线性映射的数学挑战

1.背景介绍矩阵表达是一种用于表示线性映射的数学方法。线性映射是指从一个向量空间到另一个向量空间的映射,满足线性性质。矩阵表达可以用来表示线性方程组、线性代数问题和其他许多数学问题。在本文中,我们将讨论矩阵表达的核心概念、算法原理、具体操作步骤以及数学模型公式。我们还将通过具体代码实例来说明矩阵表达的应用。2.核心概念与联系矩阵表达的核心概念包括向量、矩阵、线性映射和线性方程组等。这些概念之间存在密切的联系,我们将在后续部分中逐一讨论。2.1向量向量是一个具有多个元素的有序列表。向量可以表示为一维向量(即列向量)或多维向量(即矩阵)。向量可以表示向量空间中的点、方向向量、速度、加速度等物理量。

c++ - Python -> C++ 习语 : Storing lambda expressions in a map/container

我正在学习C++(通过Qt4)利用我的python/pyqt4经验,但我似乎无法掌握将lambda表达式存储到容器中以用作回调的正确习惯用法。我有一个包含大量字段的结构。我想创建一个回调映射,可以以特定方式正确格式化字段。这是我想做的python等价物:fromPyQt4.QtCoreimportQVariant,QStringclassAType(object):def__init__(self):self.name="FOO"self.attr2="BAR"self.attr3="BAZ"#...callbacks={}callbacks['name']=lambdax:QVari

c++ - 作为模板参数的函数的多态签名(使用 lambda)

我努力尝试了几个小时,但没能成功。我有一个模板类自旋锁:templateclassspinlock{//...volatileT*shared_memory;};我正在尝试创建这样的东西://insidespinlockclasstemplatestd::result_of(F(Args...))exec(Ffun,Args&&...args){//locksthememoryandthenexecutesfun(args...)};但我正在尝试使用多态函数,这样我就可以做到这一点:spinlockspin;inta=spin.exec([](){return10;});intb=sp