小编Any*_*orn的帖子

C++调用显式模板构造函数

你能告诉我如何显式调用模板构造函数(在初始化列表中)吗?例如:

struct T { 
    template<class> T();
};

struct U {
    U() : t<void>() {} //does not work
    T t;
};
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ templates

44
推荐指数
1
解决办法
9759
查看次数

C++互斥和const正确性

是否存在关于何时基本上只读的方法,但具有可能需要修改的互斥锁/锁定的约定,是否为常量?

如果没有一个,如果这样的方法是什么将是不利/坏设计 const

谢谢

c++

41
推荐指数
2
解决办法
1万
查看次数

STL或boost中的C++范围/ xrange等价物?

在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内在,生成代码.

c++ boost iterator

37
推荐指数
2
解决办法
1万
查看次数

C++ Eigen库如何比专业供应商库更好地运行?

我正在查看性能基准: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

c++ performance eigen

37
推荐指数
5
解决办法
3万
查看次数

快速算法实现以排序非常小的列表

这是我很久以前遇到的问题.我想我可能会问你的想法.假设我有一个非常小的数字列表(整数),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位处理器.

谢谢

sorting algorithm performance sorting-network

36
推荐指数
3
解决办法
3万
查看次数

lisp过滤掉列表中不匹配谓词的结果

我正在尝试学习lisp,使用emacs方言,我有一个问题.让我们说list有一些成员,谓词的评估结果为false.如何在没有这些成员的情况下创建新列表?类似的东西{ A in L: p(A) is true }.在python中有过滤函数,在lisp中是否有相同的东西?如果没有,我该怎么办?

谢谢

lisp elisp predicate list filter

35
推荐指数
4
解决办法
2万
查看次数

C/C++高效位数组

你能推荐有效/干净的方法来操纵任意长度的位数组吗?

现在我使用常规的int/char位掩码,但是当数组长度大于数据类型长度时,这些不是很干净.

std vector<bool> 不适合我.

c c++ arrays bit

32
推荐指数
4
解决办法
4万
查看次数

简明扼要地表达数学公式的句法建议

我正在开发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维数组.

c++ math syntax programming-languages language-design

30
推荐指数
1
解决办法
2532
查看次数

C++ lambda友谊

当一个lambda函数在一个F类的朋友的函数内声明时C,lambda函数是否可以访问C私有成员?具体来说,标准是否允许它?

c++ c++11

27
推荐指数
2
解决办法
1483
查看次数

Arduino Emacs开发

我想使用Emacs作为Arduino编程的开发环境.使用Emacs编程Arduino有哪些提示或链接?

是否有官方(或事实上的)Emacs模式?

另外,如果我独家使用Emacs,我会想念Arduino IDE吗?

emacs arduino

26
推荐指数
3
解决办法
7206
查看次数