你能告诉我如何显式调用模板构造函数(在初始化列表中)吗?例如:
struct T {
template<class> T();
};
struct U {
U() : t<void>() {} //does not work
T t;
};
Run Code Online (Sandbox Code Playgroud)
谢谢
是否存在关于何时基本上只读的方法,但具有可能需要修改的互斥锁/锁定的约定,是否为常量?
如果没有一个,如果这样的方法是什么将是不利/坏设计 const
谢谢
在STL或boost中是否有C++等效的python Xrange生成器?
xrange基本上生成递增的数字,每次调用++运算符.构造函数是这样的:
xrange(first, last, increment)
Run Code Online (Sandbox Code Playgroud)
我希望通过每个使用boost来做这样的事情:
foreach(int i, xrange(N))
Run Code Online (Sandbox Code Playgroud)
我知道for循环.在我看来,他们是太多的样板.
谢谢
我想要这样做的主要原因是因为我使用语音文本软件,并且编程循环通常很难,即使使用代码完成.具有可显示的构造更有效.
许多循环从零开始并递增1,这是范围的默认值.我发现python构造更直观
for(int i = 0; i < N; ++i)
foreach(int i, range(N))
Run Code Online (Sandbox Code Playgroud)
需要将范围作为参数的函数:
Function(int start, int and, int inc);
function(xrange r);
Run Code Online (Sandbox Code Playgroud)
我理解语言之间的差异,但是如果python中的特定构造对我非常有用并且可以在C++中高效实现,我没有理由不使用它.对于每个构造,C++都是外来的,但是人们使用它.
我将我的实现放在页面底部以及示例用法.
在我的域中我使用多维数组,通常排名4张量.所以我经常会得到4个具有不同范围/增量的嵌套循环来计算规范化,索引等等.这些不一定是性能循环,我更关心正确性可读性和修改能力.
例如
int function(int ifirst, int ilast, int jfirst, int jlast, ...);
versus
int function(range irange, range jrange, ...);
Run Code Online (Sandbox Code Playgroud)
在上面,如果需要不同的strid,你必须传递更多的变量,修改循环等,最终你会得到大量的整数/几乎相同的循环.
foreach和range完全解决了我的问题.对普通C++程序员的熟悉程度并不高我的关注列表 - 问题领域是一个相当模糊,有很多元编程,SSE内在,生成代码.
我正在查看性能基准:http://eigen.tuxfamily.org/index.php?title = Benchmark
我不禁注意到,eigen似乎始终优于所有专业供应商库.问题是:怎么可能?可以假设mkl/goto将使用处理器特定的调谐代码,而特征是相当通用的.
请注意这个http://download.tuxfamily.org/eigen/btl-results-110323/aat.pdf,基本上是一个dgemm.对于N = 1000,Eigen大约为17Gf,MKL仅为12Gf
这是我很久以前遇到的问题.我想我可能会问你的想法.假设我有一个非常小的数字列表(整数),4或8个元素,需要快速排序.什么是最好的方法/算法?
我的方法是使用max/min函数(10个函数来排序4个数字,没有分支,iirc).
// s(i,j) == max(i,j), min(i,j)
i,j = s(i,j)
k,l = s(k,l)
i,k = s(i,k) // i on top
j,l = s(j,l) // l on bottom
j,k = s(j,k)
Run Code Online (Sandbox Code Playgroud)
我想我的问题更多地与实现有关,而不是算法的类型.
此时它变得有点依赖于硬件,所以让我们假设带有SSE3的Intel 64位处理器.
谢谢
我正在尝试学习lisp,使用emacs方言,我有一个问题.让我们说list有一些成员,谓词的评估结果为false.如何在没有这些成员的情况下创建新列表?类似的东西{ A in L: p(A) is true }.在python中有过滤函数,在lisp中是否有相同的东西?如果没有,我该怎么办?
谢谢
你能推荐有效/干净的方法来操纵任意长度的位数组吗?
现在我使用常规的int/char位掩码,但是当数组长度大于数据类型长度时,这些不是很干净.
std vector<bool> 不适合我.
我正在开发C++中的功能域特定嵌入式语言,以尽可能简洁准确地将公式转换为工作代码.
我在评论中发布了一个原型,它大约有两百行.
现在我的语言看起来像这样(好吧,实际上看起来像):
// implies two nested loops j=0:N, i=0,j
(range(i) < j < N)[T(i,j) = (T(i,j) - T(j,i))/e(i+j)];
// implies summation over above expression
sum(range(i) < j < N))[(T(i,j) - T(j,i))/e(i+j)];
Run Code Online (Sandbox Code Playgroud)
我正在寻找可能的语法改进/扩展或只是尽可能清晰和精确地表达数学公式的不同想法(在任何语言,而不仅仅是C++).
你能给我一些与我的问题有关的语法例子,这些例子可以用你认为有用的选择语言来完成.特别是,如果您对如何翻译上述代码段有一些想法,我很乐意听到它们.
谢谢.
为了澄清并给出一个实际的公式,我的短期目标是表达以下内容


表达式简洁,其中值<>已经计算为4维数组.
当一个lambda函数在一个F类的朋友的函数内声明时C,lambda函数是否可以访问C私有成员?具体来说,标准是否允许它?
我想使用Emacs作为Arduino编程的开发环境.使用Emacs编程Arduino有哪些提示或链接?
是否有官方(或事实上的)Emacs模式?
另外,如果我独家使用Emacs,我会想念Arduino IDE吗?