小编Ch'*_*eng的帖子

在C++循环中vector :: size()的性能问题

在以下代码中:

std::vector<int> var;
for (int i = 0; i < var.size(); i++);
Run Code Online (Sandbox Code Playgroud)

size()成员函数是为每个循环迭代调用的,还是仅调用一次?

c++ performance for-loop vector stdvector

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

如何在Sublime Text中为用户的构建系统创建快捷方式?

我刚刚创建了XeLaTeX一个以XeLaTeX.sublime-buildUserSublime 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

keyboard-shortcuts sublimetext

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

将可调用对象作为参数传递时,为什么 g++ 会抱怨“之前无效的声明符”?

#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'

为什么我会收到这个错误?这是什么意思,如何解决?

c++

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