小编pin*_*gul的帖子

makefile中的预构建步骤

如何运行必须在所有其他makefile命令之前执行的脚本?如果没有什么可构建的话,脚本的执行会很好(但不是强制性的).

我搜索了SO和谷歌,但找不到任何东西.

我有这个解决方法:

# myscript.bat output is empty
CHEAT_ARGUMENT = (shell myscript.bat)
CFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)
AFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)
Run Code Online (Sandbox Code Playgroud)

但它非常难看.还有其他方法可以在makefile中运行" pre-build step " 吗?

makefile prebuild

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

自动参数捕获的演绎规则是什么?

我之前看到了相当于这段代码的东西,我有点惊讶地发现它按预期工作:

#include <iostream>

int main() 
{
    int a = 10;
    [=]() mutable {
        [&]() {
            a += 10;
            std::cout << "nested lambda: a=" << a << std::endl;
        }(); // call nested lambda
    }(); // call first lambda
    std::cout << "a=" << a << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

如期望的那样,输出是

nested lambda: a=20
a=10
Run Code Online (Sandbox Code Playgroud)

令我感到惊讶的是编译器发现a在嵌套的lambda中使用了它,并且正确地在第一个lambda中按值捕获它,即使它没有在那里明确使用.即,编译器必须a在嵌套的lambda和a外部作用域之间建立连接.我认为参数捕获需要是显式的(即[a]在第一个lambda中,[&a]在嵌套中),才能使它工作.

自动参数捕获的演绎规则是什么?

c++ lambda c++11 argument-deduction

10
推荐指数
1
解决办法
180
查看次数

setfill 和 setw python 等效吗?

我目前正在将一些 C++ 代码移植到 python,但没有找到如何翻译它:

print  std::setfill('0') << std::setw(2) << std::hex << myVar << std::dec << " "
Run Code Online (Sandbox Code Playgroud)

如何将std::setfill('0')and翻译std::setw(2)为 python?

c++ python std

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

如何重载 * 参数解包运算符?

我有类似的数据data = [[t1, t2, ...], [v1, v2, ...]]。我想将其包装在一个类中,这样我就可以调用data.t而不必使用data[0].

我尝试通过以下方法来做到这一点:

class Variable:
    def __init__(self, data):
        self.t = data[0]
        self.v = data[1]

    def __getitem__(self, key):
        if key == 0:
            return self.t
        elif key == 1:
            return self.v
        else:
            raise ValueError("not valid key '{}'".format(key))

    def __setitem__(self, key, value):
        if key == 0:
            self.t = value
        elif key == 1:
            self.v = value
        else:
            raise ValueError("not valid key '{}'".format(key))
Run Code Online (Sandbox Code Playgroud)

__getitem__和重载的原因__setitem__是为了向后兼容,以便data[0]仍然有效。这适用于大多数情况,但是我在以下调用中遇到了问题:

func_that_takes_two_arguments(*data) # unpacking …
Run Code Online (Sandbox Code Playgroud)

python arguments argument-unpacking

8
推荐指数
1
解决办法
3952
查看次数

函数中有多个using指令

我不想在给定的函数中包含整个命名空间,而只想包含我将要使用的东西,例如:

void doStuff() {
    using std::sin;
    using std::cos;
    ...
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

有时这个列表会变长.我想将其缩小到以下内容(类似于变量声明的可能性):

void doStuff() {
    using std::sin, std::cos;
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶地发现这是不可能的(error: expected ';' after using declaration).有没有理由为什么这样using定义?有没有其他方法可以简单地从给定的命名空间中包含许多函数(除了做using namespace ...;)?

c++ syntax using

8
推荐指数
1
解决办法
1675
查看次数

如果所有线程都写入不同的位置,多个线程可以同时写入文件吗?

我用c ++编写代码.我可以遇到任何种类的竞争条件或故障吗?

c++

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

如何在目标路径中使用通配符 (*) 使用 scp 进行复制?

是否有可能获得通配符匹配的值?即我想做

scp -r user@host:some/path/with/*/file.txt cp/to/*/file.txt
Run Code Online (Sandbox Code Playgroud)

使用上面的命令,我想要

some/path/with/TEST/file.txt --> cp/to/TEST/file.txt
some/path/with/OTHER/file.txt --> cp/to/OTHER/file.txt
Run Code Online (Sandbox Code Playgroud)

编辑: 我将添加一些实际设置的更多数据,这可能会使其更加清晰。

在我的服务器上我有结构

server $ pwd
~/sixtrack/simulations
server $ ls
run0001
run0002
run0003
...
Run Code Online (Sandbox Code Playgroud)

run*一个目录,包含文件一样run*/summary.datrun*/tracks.dat等我可以复制一切交给我自己的电脑一样

pingul $ scp -r 'user@host:sixtrack/simulations/*' .
Run Code Online (Sandbox Code Playgroud)

但是,我不想复制每个文件,而只是复制一些。因为所有文件都命名相同,并且仅通过目录分隔,所以我必须尊重结构。因此,我想host:sixtrack/simulations/run0001/summary.dat进入我的本地文件夹/Users/pingul/Workspace/simulations/run0001/summary.dat

跑步

pingul $ pwd
/Users/pingul/Workspace/simulations
pingul $ scp -r 'user@host:sixtrack/simulations/*/summary.dat' */.
Run Code Online (Sandbox Code Playgroud)

没有完成我想要的。添加-v选项作为建议打印出来

Executing: cp -r -- run0001/. run0100/.
Executing: cp -r -- run0002/. run0100/.
Executing: cp -r -- run0003/. run0100/.
...
Run Code Online (Sandbox Code Playgroud)

我只有一次 …

bash shell copy wildcard

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

如何检测功能是否存在?

我正在尝试检测函数的特定重载是否可调用。我以为我可以做一些类似于此答案的事情,但是我相信问题在于函数签名template<typename From, typename To> convert(const From&)定义得很好,但是实例化却没有。

#include <iostream>
#include <string>

template<typename From, typename To>
To convert(const From& from)
{
    // I have a lot of additional template specializations for this function
    return from; 
}

template<typename From, typename To>
struct IsConvertible
{
    template<typename = decltype(convert<From, To>(From()))>
    static std::true_type test(int);
    template<typename T>
    static std::false_type test(...);

    static bool const value = decltype(test(0))::value;
};

int main()
{
    std::cout << "IsConvertible=" << IsConvertible<int, float>::value << std::endl;
    // Returns 1 as expected …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming template-meta-programming c++11

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

使用可变参数模板的多重继承:如何为每个基类调用函数?

我有一个钻石继承计划,最后一个孩子应该能够从许多不同的父母那里继承.

     A
    /|\
   / | \
  B  C  ...
  |  |  |
    * *
    D E
Run Code Online (Sandbox Code Playgroud)

现在想象我有一个class D : public B,class E : public B, public C等等.从D我想要调用其所有父母的相同功能,我保证由于继承而存在.我的想法是我可以将它包装在一些可变参数模板中.

目前我有这个:

template <typename T>
class A
{
public:
    A(T t) : mT(t) {}
    virtual ~A() {}
    virtual void doThings() = 0;
protected:
    T mT;
};

template <typename T, typename A = A<T>>
class B : public A
{
public:
    B(T t) : A(t) {}
    virtual ~B() {} …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11

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

为什么 Jupyter Notebook 突然变慢这么多?

我正在 Jupyter Notebook 上处理客户和购买数据。\n我在上面轻松地编写和执行代码,但突然间,它的速度变慢了,甚至需要很长时间才能执行一个简单的代码,例如print('A'). 最糟糕的是它没有向我显示任何错误,所以我完全不知道 Jupyter Notebook 或我的代码出了什么问题。

\n\n

原始数据有点大。我合并了两个数据集,分别有 424,699 行和 22 列,总共有 4,308,392 行和 39 列。

\n\n
The versions:\nPython \xe2\x86\x92 3.7.4\nJupyter Notebook \xe2\x86\x92 6.0.0\nwindows 10 pro\n
Run Code Online (Sandbox Code Playgroud)\n\n

我只是想提高 Jupyter Notebook 的执行速度。

\n

python jupyter-notebook

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