我想知道是否有一个emacs包可以让我快速查看函数生成的汇编代码?这也适用于启用编译器优化.我想要的是能够使用一个命令打开一个新缓冲区,其中包含当前函数的汇编代码.
OS X上的Xcode做得非常好,但我想在我的开发工作站上切换回Linux和emacs,这是我学到的很多功能.
是否有一个单行查找排序容器中小于某个元素 x 的最大元素?我基本上对任何会给我一个指向小于 x 的最大元素的迭代器的代码感兴趣。
我知道如何自己编写代码,但希望有一个库函数......
编辑:也许我应该在这里澄清一下,我想到的我自己编码的版本是基于二进制搜索的,因此在 O(log n) 时间内运行。我需要为最多有几百万个元素的列表计算这个。
我不确定我能找到的答案是否是我所需要的最简单方法.我知道如何修改为我的问题的完整解决方案的简单模板将是完成以下操作的代码:
将两个迭代器作为输入,指向包含值类型为T的东西的可迭代容器(vector,list ...)的开头和结尾.
std::vector<T>通过从开头到结尾迭代输入容器,以任何顺序返回包含输入容器的逐个元素的副本.
不起作用的东西如下:
template<typename Iterator, typename T>
std::vector<T> dumb_copy(Iterator first, Iterator last) { ... }
Run Code Online (Sandbox Code Playgroud)
问题是我需要编译器以某种方式检查我是否给出了指向T类型的迭代器.
我目前正在学习C++并将实践编写为我能想到的某些算法的最通用实现,所以我想从一开始就获得最佳实践.如果使用C++ 11构造有一种简单的方法,那对我来说没问题.
假设我们给出了一组整数对S = {(x_1,y_1),...,(x_n,y_n)}.在S中计算最大元素序列(a_1,b_1),...,(a_m,b_m)的最有效方法是什么?
a_i <= a_ {i + 1}
b_i <= b_ {i + 1}
对于i = 1,...,m-1,即序列是针对两个分量排序的.我可以提出一个执行以下操作的二次算法:
我们根据第一个坐标对S的元素进行排序,给出(c_1,d_1),...,(c_n,d_n),其中c_i <= c_ {i + 1}.
使用动态编程,对于每个(c_i,d_i),我们计算相对于以(c_i,d_i)结尾的两个分量排序的最长序列.一旦我们知道(c_1,d_1)...,(c_ {i + 1},d_ {i + 1})的最长这样的序列,这可以在线性时间内完成.
由于我们必须在步骤1中执行O(nlogn)排序并且在步骤2中对每个索引进行线性搜索(二次),我们最终得到二次运行时.
我一直试图弄清楚是否存在一种更快的,即O(nlogn)方式,从具有两种集合S生成最大序列:一种相对于第一种成分,一种相对于第二种.这可能吗?