在以下代码中:
std::vector<int> var;
for (int i = 0; i < var.size(); i++);
Run Code Online (Sandbox Code Playgroud)
size()成员函数是为每个循环迭代调用的,还是仅调用一次?
我刚刚创建了XeLaTeX一个以XeLaTeX.sublime-build在UserSublime Text目录中创建的文件命名的构建系统,其内容为:
{
"cmd": ["xelatex.exe","-synctex=1","-interaction=nonstopmode","$file_base_name"]
}
Run Code Online (Sandbox Code Playgroud)
如果我想将我的F1密钥绑定到这个特定的构建系统,我该怎么办?
注意:Ctrl + B不应影响默认的构建系统.也就是说,我可以使用Ctrl + B默认值,而F1新系统也可以同时使用.
也许有另一种方法来实现这一目标.添加以下文本Default(Windows).sublime-keymap将执行命令:
{"keys": ["f1"], "command": "exec", "args": {"cmd": ["xelatex.exe","-synctex=1","-interaction=nonstopmode","$file_base_name"]}},
Run Code Online (Sandbox Code Playgroud)
但是,$file_base_name这里没有定义.有没有方法可以将当前文件(base_)名称传递给exec?
#include <iostream>
#include <vector>
#include <functional>
struct Callable {
void operator()() {
std::cout << "hello world\n";
}
};
std::vector<std::function<void()>> cbs;
void register(std::function<void()>&& cb) { // <-- ERROR
cbs.emplace_back(std::move(cb));
}
int main() {
Callable c;
register(std::bind(std::ref(c)));
for (auto& cb : cbs) {
cb();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的 C++ 代码段中,在注释行中g++-9报告错误error: invalid declarator before 'cb'。
为什么我会收到这个错误?这是什么意思,如何解决?