expression-templates相关内容

表达式模板和C ++ 11

让我们看一下表达式模板的一个特殊好处:ET可用于避免内存中的矢量大小的临时变量,这些临时变量会在重载运算符中发生,例如: template std :: vector运算子+(const std :: vector T& a,const std :: vector T& b) { std :: vector ..
发布时间:2020-09-27 02:10:03 C/C++开发

如何围绕表达式模板编写第三方库包装器类

我们正在尝试在我的研究小组中实施新的C ++代码,以执行大型数值模拟(有限元,有限差分法,拓扑优化等).该软件将被学术界和行业人士使用. 对于该软件的稠密线性代数,我们想使用Eigen或Armadillo.我们希望围绕这些软件包构建一个包装器,其原因有两个:1.向用户而不是第三方API公开我们自己的API; 2.如果将来需要切换库.我知道原因2是一种非常昂贵的保险形式,但是我们在以前的模拟软 ..
发布时间:2020-09-07 03:16:30 C/C++开发

表达式模板未完全内联

我已经完成了数学库的第一个版本,下一步,我想转向表达式模板来提高代码的性能.但是,我的初步结果与预期不同.我正在MSVC 2010中以原始发布模式进行编译(并且对于C ++ 0x没问题). 我将向您展示大量代码,这是预先的道歉,它使我尽可能地做到最小,同时让人们了解我在做什么.分析框架: #include #include #include ..
发布时间:2020-05-21 20:53:21 C/C++开发

从Eigen :: CwiseBinaryOp转换到MatrixXd导致segfault

我正在写一个库,存储Eigen表达式模板作为成员变量,以进行需要做的复杂计算。但是,似乎我不能存储或返回这些表达式模板,除非它们直接在MatrixXd或类似的转换。这迫使每一步都被保存到一个临时的,并且浪费整个设计的效率。 这里有一个简短的例子,导致麻烦。 Holder只是拥有一个Eigen矩阵,而Summer需要两个持有者并输出他们持有的两个矩阵的总和,当你调用get()。 包含文件 ..
发布时间:2016-11-14 00:51:49 C/C++开发

嵌套std :: forward_as_tuple和分段故障

我的实际问题是更复杂,看起来很难给出一个简短的具体例子来重现它。所以我在这里发布一个不同的小例子,可能是相关的,它的讨论也可能有助于在实际的问题: // A:works fine(prints'2') cout(std :: get( std :: forward_as_tuple(3,std :: forward_as_tuple(2,0)) ..

避免需要#define与表达式模板

使用以下代码,“hello2”不会显示为在执行第4行之前在第3行模具上创建的临时字符串。使用#define作为行1避免了这个问题,但有没有一种方法,以避免使用#define? (C ++ 11代码没问题) #include #include class C { public: C(const std :: string& p_s) ..
发布时间:2016-10-30 15:00:12 C/C++开发

模板匹配方法派生类型,而不是基地

我有一组,我需要覆盖前pression模板运营商。我想一个基本类型匹配的基本类型的所有派生类。其他的事情然后由泛型类型被抓。不幸的是,基本类型做之前泛型类型抓住派生类型。为了让这件事情扑朔迷离,一切都是模板pretty巨资,其中包括一些CRTP。让我试着给code更简单的版本: //注:'R'是用于返回类型 模板< typename的DerivedType,typename的R> ..
发布时间:2016-08-12 19:08:57 C/C++开发