小编gra*_*olf的帖子

如何在单个循环的每次迭代中从每个文件中读取一行?

我需要在一个循环中读取多个文件.我有一个带有X坐标的文件,一个带有Y坐标的文件和一个带有这些坐标上的字符的文件.

现在我paste用来将这些文件放在一起,然后在while循环中使用cut它们将它们分开:

paste x-file y-file char-file | while -r line; do
    Y=$(echo "$line" | cut -d\  -f1)
    X=$(echo "$line" | cut -d\  -f2)
    CHAR=$(echo "$line" | cut -d\  -f3)
done
Run Code Online (Sandbox Code Playgroud)

但问题是它真的很慢(cut一次又一次地打电话).

我应该如何做到这一点,在每个循环中有适当的值$Y,$X$CHAR加快速度?

bash

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

何时复制返回值

我们假设我有以下代码:

int bar = 0;

struct Foo {
    ~Foo() { bar = 1; }
};

int main(int argc, char ** argv) {
    Foo f;
    return bar;
}
Run Code Online (Sandbox Code Playgroud)

什么是程序的回报价值?0还是1?

c++ visual-c++ c++11

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

如何更改rubocop的默认设置?

是否可以更改rubocop的默认设置?我想要类似的东西~/.rubocop_default.yml,但是我在文档中没有找到类似的东西。但这一定有可能吧?我该如何实现?

ruby rubocop

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

可变参数模板和多重继承

我正在努力使用可变参数模板进行多重继承.

到目前为止这是我的代码:

template <typename U>
    class id_map {
    public:
    std::vector<U> vec_;
};
Run Code Online (Sandbox Code Playgroud)

现在我想初始化另一个类,它从id_map继承多次,如下所示:

template<typename ... T>
class constant_allkey_map : public id_map<T> ... {
private:
public:
    template <typename U>
    void push_back(U i) {
        id_map<U>::vec_.push_back(i);
    }
};
Run Code Online (Sandbox Code Playgroud)

这有效,我可以很好地访问它:

constant_allkey_map<int, long> cakm;
cakm.push_back<int>(1);
Run Code Online (Sandbox Code Playgroud)

当我尝试这样的事情时,它失败了:

constant_allkey_map<int, int> cakm;
Run Code Online (Sandbox Code Playgroud)

有错误

"duplicate base type id_map<int> invalid".
Run Code Online (Sandbox Code Playgroud)

我做了一些阅读,似乎我应该用id参数扩展id_map模板:

template <size_t i_, typename U>
class id_map ...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在继承部分传递该id:

template<typename ... T>
class constant_allkey_map : public id_map<T> ... {
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?如果我这样做完全错了,请指出正确的方向?

multiple-inheritance variadic-templates c++11

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

("v"1)和("v".1)之间的差异

开始学习计划,我遇到了这个:

有什么区别

("v" . 1)
Run Code Online (Sandbox Code Playgroud)

("v" 1)
Run Code Online (Sandbox Code Playgroud)

他们似乎工作相同,只是想知道有什么区别.我倾向于使用("v" 1),但( cons "v" 1 )返回("v" . 1).那么,有什么区别?

谢谢

scheme

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

在无效对象上调用成员函数

在visual studio中,您可以在已删除的对象上调用函数:

class Foo {
    void bar() {
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)

你可以实际执行以下代码而不会出错:

Foo * foo = new Foo();
delete foo;
foo->bar();
Run Code Online (Sandbox Code Playgroud)

并且只要Foo :: bar中的代码不对this指针执行任何操作.我的第一个问题是,这种未定义的行为是否恰好起作用还是符合标准?

第二个问题:

如果我们将代码更改为:

Foo * foo = new Foo();
delete foo;
foo = nullptr;
foo->bar();
Run Code Online (Sandbox Code Playgroud)

我们可以在Foo :: bar中使用以下检查

if (this == nullptr) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

以确定我们是否对有效对象进行操作.虽然这样做似乎不太好主意,但是有没有任何架构/设计可能有用?

c++ visual-c++ c++11

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

如何更改 gvim 标题字符串

我想更改默认的 gvim 标题字符串

$FILENAME $MODIFIERS ($FILEDIR) - $VIMSERVER
Run Code Online (Sandbox Code Playgroud)

进入以下

$VIMSERVER - $FILENAME $MODIFIERS ($FILEDIR)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何实现这一目标。我对 vim 不太好,所以看着:help statusline对我帮助不大,我不确定如何获取 vimserver 和 filedir,只有 %F 但我不知道如何剪切文件名。

目前最简单的选项似乎只是修补buffer.c以默认生成我想要的东西(无论如何我都是从源代码编译 vim 的),但我确信没有它应该是可能的。

有人可以帮我弄这个吗?

vim

0
推荐指数
1
解决办法
618
查看次数

没有终端如何启动gvim?

我正在尝试使用以下行启动gvim:

execl("/usr/bin/gvim", "-f", path, (char *)NULL);
Run Code Online (Sandbox Code Playgroud)

但是我越来越

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决这个问题。我的意思是,我知道输出不是终端,这就是为什么我使用的gvim不是just vim。这可能确实很明显,但是我不知道。

c vim

0
推荐指数
1
解决办法
45
查看次数