小编Man*_*uel的帖子

C++类成员的生命周期

C++类成员的生命周期是多少.例如,std::fstream某个Foo对象何时会被释放?进入析构函数或离开析构函数时?这是在C++标准中定义的吗?

struct Foo
{
    std::fstream mystream;
    ~Foo()
    {
        // wait for thread writing to mystream
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ raii

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

Visual C++中的_Pragma预处理程序运算符

是否有像_PragmaVisual C++中的ANSI C运算符?

例如,我正在尝试定义以下宏:

#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) _Pragma (#x)
#else  // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif  // #ifdef _OPENMP
Run Code Online (Sandbox Code Playgroud)

因此,我可以绕过#pragma omp ...旧GCC编译器中未知的编译器警告.VisualC++中是否有类似的方法?

portability pragma visual-c++ c-preprocessor

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

在格子图中使用图案添加/代替背景颜色

我正在使用R晶格包的水平图.我得到的情节看起来如下图所示.

我现在的问题是我需要生成黑白版本进行打印.

有没有办法将颜色更改为灰度,并为矩形提供背景图案,以便红色可以与蓝色区分开来?例如,想到点或对角破折号.

谢谢!

示例图片

r colors lattice levelplot

5
推荐指数
2
解决办法
2828
查看次数

Sphinx 自动文档和多行字符串

我有一个 python 模块,它定义了一个多行字符串常量。我想让多行字符串在基于 Sphinx 的文档中很好地显示。

\n\n

下面是一些示例 Python 代码、RST 以及它如何使用sphinx-build. 然而,我宁愿得到类似“所需的狮身人面像文档”之类的东西。

\n\n

这可能吗?

\n\n

mymodule.py

\n\n
#: Default configuration\nDEFAULT_CONFIG = r"""\n{ "foo": "bar",\n  "baz": "rex" }\n"""\n
Run Code Online (Sandbox Code Playgroud)\n\n

mydocs.rst

\n\n
...\n\n--------------\nDefault Config\n--------------\n\n.. autodata:: mymodule.DEFAULT_CONFIG\n
Run Code Online (Sandbox Code Playgroud)\n\n

生成的 Sphinx 文档

\n\n
mymodule.DEFAULT_CONFIG\n= "{ \\"foo\\": \\"bar\\",\\n  \\"bar\\": \\"rex\\" }"\n\nstr(object=\xe2\x80\x99\xe2\x80\x98) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str\n\nCreate a new string object from the given object.\nIf encoding or errors is specified, then the object\nmust expose a data buffer that will be decoded using\nthe given …
Run Code Online (Sandbox Code Playgroud)

python python-sphinx autodoc

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

用malloc()强制垃圾收集/压缩

我有一个C++程序,可以在不同长度的输入数组上对各种算法进行基准测试.它看起来或多或少像这样:

# (1)
for k in range(4..20):
  # (2)
  input = generate 2**k random points
  for variant in variants:
    benchmark the following call
    run variant on input array
  # (3)
Run Code Online (Sandbox Code Playgroud)

是否可以将(2)处的整个堆管理重置为它在(1)处的状态?在程序期间分配的堆上分配的所有内存都保证在(3)处被释放.

我在Linux上使用g ++ 4.3.

编辑:我知道C/C++中没有真正的垃圾收集.我想强制内存分配加入它在(2)的空闲列表中的相邻空块内存.

c++ memory heap malloc memory-management

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

就地std :: copy_if

在我看来,这std::copy_if对过滤容器非常有用:

std::vector<int> vec { 1, 2, 3, 4 };
auto itEnd = std::copy_if(vec.begin(), vec.end(), vec.begin(),
                          [](int i) { return i > 2; });
vec.resize(itEnd - vec.begin());
Run Code Online (Sandbox Code Playgroud)

但是,std::copy_if指定输入和输出范围可能不重叠.

还有其他选择吗?

c++ stl c++11

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

CPP宏:提供实例化/调用次数的计数器

我想有一个C预处理器宏,它知道到目前为止该宏的实例化/宏调用的数量.例:

int main() {
  printf("%d\n", MACRO());
  printf("%d\n", MACRO());
}
Run Code Online (Sandbox Code Playgroud)

应该打印

0
1
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

请注意,这是足够转发给一个函数如下建议.它应该在以下环境中工作:

// global variable
std::vector<bool> calls_hit;

#define OTHER_MACRO() \
{ \
    const int counter = MACRO(); \
    calls_hit.resize(std::max(calls_hit.size(), counter)); \
    calls_hit[counter] = true; \
}
Run Code Online (Sandbox Code Playgroud)

c++ c-preprocessor

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

第一次初始化可能的非POD数组上的std :: fill_n?

是否可以使用std::fill初始化非POD类型的数组?

该文件说,std::fill使用operator=初始化数组没有放置副本建设.但是,就我所见,赋值运算符在未初始化空间上调用它时,实际上没有机会释放任何当前内存.

例:

struct NonPod
{
    std::string myStr;
};

NonPod arr[10];
NonPod prototype;
NonPod * ptr = &arr[0];
std::fill_n(ptr, 10, prototype);
Run Code Online (Sandbox Code Playgroud)

c++ initialization fill

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

初始化列表与初始化方法

至少有两种方法可以在C++中初始化一个类.

(1)初始化列表

struct C
{
  int i;
  C() : i(0) {}
};
Run Code Online (Sandbox Code Playgroud)

(2)初始化方法

struct D
{
  int i;
  C() { init(); }
  void init() {
    i = 0;
  }
};
Run Code Online (Sandbox Code Playgroud)

我需要不时地重新启动我班级的对象.使用第二种解决方案,我可以简单地打电话obj.init().使用第一个解决方案,我要么必须添加一个init()基本上复制初始化列表效果或使用的函数obj = C().

对于哪种变体在这里更好,是否存在或多或少的共识?使用初始化方法是否有缺点(除了C++ FAQ中提到的可能的性能损失).

c++

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

使用Django REST Framework和coreapi上传文件

是否可以在具有FileField的模型中使用HyperlinkedModelSerializer执行文件上传到DRF?

我正在使用utils包中的coreapi File类,而coreapi抱怨File对象不是JSON的主要(原文如此).

查看代码看起来模式必须说编码必须是多部分形式.

在哪里可以找到将这样的文件上传到DRF到具有FileField的模型的工作示例?

file-upload core-api django-rest-framework

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

Snakemake 包装器中(生物)conda 版本的最佳实践?

environment.yml使用 conda 在 Snakemake 包装器中指定包的最佳实践是什么?我明白渠道应该是:

channels:    
  - conda-forge
  - bioconda
  - base
Run Code Online (Sandbox Code Playgroud)

但是,指定包的好选择是什么?我是否指定没有版本?完整版?

使用完整版本导致之前使用无限/超长 conda 环境解析问题。但是,不固定版本会带来隐式升级到不兼容版本的包的风险。

我是只指定直接依赖项还是应该将输出放在conda env export那里以便一切都被冻结?

conda snakemake

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

用状态创建C++ 11 std :: function <>

std::function<>用状态创建C++ 11的最佳方法是什么?

在普通的C++ 98中,我将创建一个继承自std::unary_function<>或的functor结构std::binary_function<>.因此,给定以下仿函数,如何std::function<int(int)>从以下仿函数创建一个?

struct Functor
{
    int x;
    Functor(int val) : x(val) {}

    int operator()(int val) { return val + x; }
};

int main()
{
    Functor f(10);
    int x = f(30);
}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的代码非常简化了我的需求.实际上,仿函数配置了多个参数并从文件中读取数据(其中每个记录比int更复杂).有没有比使用lambdas更接近使用仿函数的解决方案?

编辑:澄清

c++

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