我需要在一个循环中读取多个文件.我有一个带有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加快速度?
我们假设我有以下代码:
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?
是否可以更改rubocop的默认设置?我想要类似的东西~/.rubocop_default.yml,但是我在文档中没有找到类似的东西。但这一定有可能吧?我该如何实现?
我正在努力使用可变参数模板进行多重继承.
到目前为止这是我的代码:
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)
有人可以帮帮我吗?如果我这样做完全错了,请指出正确的方向?
开始学习计划,我遇到了这个:
有什么区别
("v" . 1)
Run Code Online (Sandbox Code Playgroud)
和
("v" 1)
Run Code Online (Sandbox Code Playgroud)
他们似乎工作相同,只是想知道有什么区别.我倾向于使用("v" 1),但( cons "v" 1 )返回("v" . 1).那么,有什么区别?
谢谢
在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)
以确定我们是否对有效对象进行操作.虽然这样做似乎不太好主意,但是有没有任何架构/设计可能有用?
我想更改默认的 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 的),但我确信没有它应该是可能的。
有人可以帮我弄这个吗?
我正在尝试使用以下行启动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。这可能确实很明显,但是我不知道。