小编Any*_*orn的帖子

x86-64长双精度

英特尔64位平台的长双精度的实际精度是多少?是80位填充到128或实际128位?

如果是前者,除了去gmp之外,还有其他选择来实现真正的128精度吗?

c c++ floating-point precision long-double

6
推荐指数
1
解决办法
3814
查看次数

检查C++模板实例化

是否有一些实用程序可以让我检查模板实例化?我的编译器是g ++或Intel.

具体要点我想:

  • 一步一步实例化.
  • 实例化回溯(可以通过崩溃编译器破解它.更好的方法?)
  • 检查模板参数.

@gf用简单的打印方式帮我,C++模板名称漂亮打印.

然而,我正在进入提升凤凰和模板级别使得很难理解发生了什么,我想要智能解决方案

另外,如果你有一些检查模板实例化的技术,请你分享一下.

谢谢

c++ templates

6
推荐指数
1
解决办法
2222
查看次数

提升线程互斥数组

我的问题是,我有多个线程更新的块矩阵.多个线程可能一次更新不相交的块,但通常可能存在竞争条件.现在矩阵使用单锁锁定.

问题是,是否有可能(如果是,如何?)实现有效的锁定数组,以便一次只能锁定矩阵的一部分.

所讨论的矩阵可以变得相当大,按照50 ^ 2块的顺序.我最初的猜测是使用动态分配互斥量的矢量/映射.

这是好方法吗?是否更好地使用多个条件变量?有更好的方法吗?

c++ performance multithreading boost

6
推荐指数
1
解决办法
1852
查看次数

快速查找给定向量的字典向量.高尺寸

我正在寻找可扩展的答案,但出于我的特定目的,我有一个48维向量.这可以表示为48个整数的数组,全部介于0和255之间.

我有一本关于这些载体的大字典,大约有2.5万个.

我需要能够获取可能在我的数据库中或可能不在我的数据库中的向量,并快速找到数据库中哪个向量最接近.最接近,我的意思是传统的距离公式.

我的代码最终会出现在python中,但这更像是一个普遍的问题.

蛮力太慢了.我需要一个近词典速度查找.有人有想法吗?

python algorithm math vector

6
推荐指数
2
解决办法
368
查看次数

如何访问另一个进程的内存并调用其函数?

我想学习如何读取其他进程内存并让我的程序调用其他进程函数,而不是我自己的参数和东西.我用谷歌搜索它,似乎你需要使用像ReadProcessMemory这样的东西,但我找不到任何好的教程来解释如何使用它们.谁能指出我正确的方向来学习这样的事情?我希望在Windows上使用C++(或者如果可能的话)使用Java(如果重要的话,可以使用7和64位).

另外,我知道这听起来很主观,可以用于恶意目的,但我保证不会因为任何有害的原因而使用从中获得的任何知识.我纯粹想要学习这个以获得乐趣并自学一些新东西.

c++ windows

6
推荐指数
1
解决办法
8130
查看次数

内存分配器建议

我有多线程部分,线程需要分配几个大的数据段,比如每个大约100MB,用作缓冲区.此外,缓冲区可能需要在运行时调整几次.

自然的解决方案是使用,realloc但它可能会移动不需要的内存. free/malloc配对调整大小缓冲区恐怕可能导致碎片并保留内存然后创建其他问题.

我可以使用什么来分配/重新分配内存?

c memory optimization

6
推荐指数
1
解决办法
245
查看次数

C99可变长度自动阵列性能

在64位x86 Linux平台上使用带有g ++/Intel的自动数组是否会产生显着的CPU /内存开销?

int function(int N) {
    double array[N];
Run Code Online (Sandbox Code Playgroud)
  • 与先前分配数组相比的开销(假设函数被多次调用)

  • 与使用新的相比开销

  • 与使用相比的开销 malloc

N的范围可以粗略地从1kb到16kb,堆栈溢出不是问题.

c performance

5
推荐指数
2
解决办法
1143
查看次数

编译器可以优化静态局部变量的初始化吗?

在以下情况下应该采取什么行为:

class C {
    boost::mutex mutex_;
    std::map<...> data_;
};

C& get() {
    static C c;
    return c;
}

int main() {
    get(); // is compiler free to optimize out the call? 
    ....
}
Run Code Online (Sandbox Code Playgroud)

编译器是否允许优化对 的调用get()

这个想法是在多线程操作需要静态变量之前对其进行初始化

这是更好的选择吗?:

C& get() {
    static C *c = new C();
    return *c;
}
Run Code Online (Sandbox Code Playgroud)

c++ static compiler-optimization

5
推荐指数
1
解决办法
2217
查看次数

elisp mapcar + lambda + defmacro帮助

我正在尝试使用宏生成函数:

(defmacro make-my-emacs-command-region (cmd name)
  (list 'defun (intern (format "my-emacs-command-%s-%s" cmd name))
        '(&optional arg)
        (list 'interactive "p")
        (list (intern (format "mark-%s" name)) 'arg)
        (list (intern (format "my-emacs-command-%s-region" cmd))
              '(region-beginning) '(region-end))))
Run Code Online (Sandbox Code Playgroud)

发电机:

(mapcar (lambda (a) (make-my-emacs-command-region a buffer))
        '(foo bar))
Run Code Online (Sandbox Code Playgroud)

但我得到:

my-emacs-command-a-buffer
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我如何强制传递价值a

lisp emacs macros elisp

5
推荐指数
2
解决办法
749
查看次数

使用 lambda 进行参数包扩展

我正在尝试实例化一个函数表(以模拟switch

\n\n
  template<size_t ... N>\n  int f(std::index_sequence<N...>, int k)\n  {\n    static auto f_table = { []() { return N; }... };\n    auto f = f_table.begin() + k;\n    assert((*f)() == k);\n    return (*f)();\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

失败了error: parameter packs not expanded with \xe2\x80\x98...\xe2\x80\x99:

\n\n

我可以使用额外的包装函数,但是为什么 lambda 会失败,有解决方法吗?

\n

c++ variadic-templates

5
推荐指数
1
解决办法
156
查看次数