小编Aur*_*ius的帖子

在github wiki中的LaTeX数学

是否可以使用github repo wiki以任何方式包含LaTeX风格的数学?谷歌搜索意味着github不再允许像MathJax这样的东西,但大多数参考文献已经存在多年了.在github wikis中包含LaTeX格式的数学有哪些(如果有的话)替代品?

wiki latex github

27
推荐指数
2
解决办法
8511
查看次数

clang-format:总是打破所有参数,每行一个

我希望我的函数原型/定义总是将参数分成单独的行,而不管总长度如何.否则默认.clang-format选项

BasedOnStyle: Chromium
AlignAfterOpenBracket: 'AlwaysBreak'
BinPackArguments: 'false'
BinPackParameters: 'false'
ColumnLimit: '80'
Run Code Online (Sandbox Code Playgroud)

给出以下格式

  void foo(float a, float b);

  void foo(float a, float b, float c, float d, float e, float f, float g);

  void
  foo(float a, float b, float c, float d, float e, float f, float g, float h);

  void foo(
      float a,
      float b,
      float c,
      float d,
      float e,
      float f,
      float g,
      float h,
      float i);
Run Code Online (Sandbox Code Playgroud)

我想让他们一直被打破,每行一个参数,如下:

  void foo(
      float a,
      float b);

  void foo( …
Run Code Online (Sandbox Code Playgroud)

c++ formatting clang-format

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

C++返回值优化

这段代码:

#include <vector>

std::vector<float> getstdvec() {
    std::vector<float> v(4);

    v[0] = 1;
    v[1] = 2;
    v[2] = 3;
    v[3] = 4;

    return v;
}

int main() {
    std::vector<float> v(4);

    for (int i = 0; i != 1000; ++i)
    {
        v = getstdvec();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里的错误理解是函数getstdvec不应该实际分配它返回的向量.当我在valgrind/callgrind中运行它时,我看到有1001个调用malloc; 1表示main中的初始向量声明,1000表示每次循环迭代.

是什么赋予了?如何从这样的函数返回向量(或任何其他对象)而不必每次都分配它?

编辑:我知道我可以通过引用传递向量.我的印象是,有可能(甚至更可取)编写这样的函数,它返回一个对象而不会产生不必要的分配.

c++ return-value-optimization copy-elision

10
推荐指数
2
解决办法
7575
查看次数

你应该在成员函数中传递成员变量吗?

这里有一个风格问题.假设我有一个类A,它必须对其成员变量执行一系列相当复杂的事情B b

class A {
 public:
  void DoStuffOnB(){
   DoThing1();
   DoThing2();
   DoThing3();
  }
 private:
  B b;
  void DoThing1(){ /* modify b */ }
  void DoThing2(){ /* modify b */ }
  void DoThing3(){ /* modify b */ }
};
Run Code Online (Sandbox Code Playgroud)

其中DoThings功能仅依赖于b(或其它成员变量和一些传递的参数).如果我想让这些函数在将来可以在该类之外重用,我最好把它们写成:

class A {
 public:
  void DoStuffOnB(){
   DoThing1(b);
   DoThing2(b);
   DoThing3(b);
  }
 private:
  B b;
  void DoThing1(B& b){ /* modify b */ }
  void DoThing2(B& b){ /* modify b */ }
  void DoThing3(B& b){ /* modify b …
Run Code Online (Sandbox Code Playgroud)

c++ oop reusability

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

向量值boost :: program_options的默认值

我有一个boost :: program_options选项,可以将所需的输入选项成功解析为向量,但是我没有看到如何为它提供默认值。例:

base.add_options()
 ("vector_value",po::value<std::vector<double> >(&vecoption)->multitoken(),"description");
Run Code Online (Sandbox Code Playgroud)

可以很好地将值读入vecoptions之类的东西

    base.add_options()
 ("int_value",po::value<int>(&intoption)->default_value(1),"description");
Run Code Online (Sandbox Code Playgroud)

也可以正常工作,但是尝试为vector参数赋予默认值,例如in

base.add_options()
 ("vector_value",po::value<std::vector<double> >(&vecoption)->default_value(std::vector<double>{0,1,2}),"description");
Run Code Online (Sandbox Code Playgroud)

给出编译器错误

错误:静态断言失败:源类型既不是std :: ostream`able也不是std :: wostream`able

如何创建具有默认值(如{0,1,2})的向量值float选项?

c++ boost-program-options

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

boost :: log关闭日志文件并打开一个新文件

我正在使用boost :: log同时登录到文件和控制台。初始化如下:

void Init() {
logging::core::get()->set_filter
    (
        // set logging level to one of trace, debug, info, warning, error, fatal
        logging::trivial::severity >= logging::trivial::trace
    );
logging::add_common_attributes(); // enables timestamps and such
logging::add_file_log
    (
        keywords::file_name     = logfile + "_%N.log",
        keywords::rotation_size = 1024 * 1024 * 50, // 50MB log file max
        //       keywords::format = "[%TimeStamp%]: %Message%"
        keywords::format        = "%Message% #[%TimeStamp%]"
    );

logging::add_console_log(std::cout,
                         keywords::format = "%Message%"
);
}
Run Code Online (Sandbox Code Playgroud)

在程序的某些时候,我想手动更改日志文件。我可以在上面的代码中更改“ logfile”字符串,然后再次调用该Init(),但是它将继续写入旧的日志文件并启动新的日志文件,并开始将控制台日志的输出加倍。

我缺少某种对应的“ remove_file_log”,还是手动告诉它停止记录到原始日志并移至下一个日志?

c++ boost boost-log

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