小编Nik*_*hin的帖子

功能C++ 11奇怪的行为

为什么这行不能编译:

function<const int&(const int&, const int&)> min_ptr = min<int>;
Run Code Online (Sandbox Code Playgroud)

但这很好用:

const int &(*min_ptr)(const int&, const int&) = min<int>;
Run Code Online (Sandbox Code Playgroud)

似乎函数类是灵活且舒适的替换函数指针.但为什么这个案子不起作用?

编辑.我的代码:

#include <functional>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
    const int&(*min_ptr)(const int&, const int&) = min<int>; //It is works fine
    function<const int&(const int &, const int&)> min_f = min<int>;// Doesn't compile
    /*
       Error message:
        error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type 
        ‘std::function<const int&(const int&, const int&)>’ requested function<const int&(const int &, const int&)> …
Run Code Online (Sandbox Code Playgroud)

c++ pointers function-pointers c++11

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

pandas.DataFrame corrwith()方法

我最近开始合作pandas.任何人都可以.corrwith()Series和解释我的功能行为的差异DataFrame吗?

假设我有一个DataFrame:

frame = pd.DataFrame(data={'a':[1,2,3], 'b':[-1,-2,-3], 'c':[10, -10, 10]})
Run Code Online (Sandbox Code Playgroud)

我想要计算特征'a'和所有其他特征之间的相关性.我可以通过以下方式完成:

frame.drop(labels='a', axis=1).corrwith(frame['a'])
Run Code Online (Sandbox Code Playgroud)

结果将是:

b   -1.0
c    0.0
Run Code Online (Sandbox Code Playgroud)

但非常相似的代码:

frame.drop(labels='a', axis=1).corrwith(frame[['a']])
Run Code Online (Sandbox Code Playgroud)

生成绝对不同且不可接受的表格:

a   NaN
b   NaN
c   NaN
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:为什么在DataFrame作为第二个参数的情况下我们得到如此奇怪的输出?

python dataframe pandas

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

检查按钮在React-Testing-Library中是否被禁用

我有一个React组件,它会生成一个按钮,其中的内容包含<span>类似这样的元素:

function Click(props) {
    return (
        <button disable={props.disable}>
            <span>Click me</span>
        </button>
    );
}
Run Code Online (Sandbox Code Playgroud)

我想使用react-testing-librarymocha+ 测试该组件的逻辑chai

我目前遇到的问题是getByText("Click me")选择器返回<span>DOM节点,但是对于测试,我需要检查disable<button>节点的属性。处理此类测试用例的最佳实践是什么?我看到了一些解决方案,但是所有这些听起来都有些偏离:

  1. 使用data-test-id<button>元素
  2. 选择<Click />组件的祖先之一,然后选择within(...)此范围的按钮
  3. 单击带有的选定元素,fireEvent并检查没有任何反应

您可以提出更好的方法吗?

reactjs react-testing-library

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

泛型类型相互引用

我编写了简单的解析器并希望实现接下来的两个接口:

public interface IResult<TValue, TToken> 
    where TToken : ITokenizer<IResult<TValue, TToken>, TValue>
{
    TToken Tokenizer { get; }
    TValue Value { get; }
}

public interface ITokenizer<TResult, TValue> 
    where TResult : IResult<TValue, ITokenizer<TResult, TValue>>
{
    TResult Advance();
}
Run Code Online (Sandbox Code Playgroud)

它还有下一个用途:ITokenizer是一个不可变的类,用于按标记拆分字符串。我们可以调用Advance方法并获取Result:下一个标记和下一个标记器。所以,我想在Result类中存储令牌和标记器,并希望为此添加编译时约束。

现在我在构建这两个接口期间出现编译时错误。

我认为下一个类可以实现具有所有约束的接口:

public class Result : IResult<string, Tokenizer>
{ /* implement interface */}

public class Tokenizer : ITokenizer<Result, string>
{ /* implement interface */}
Run Code Online (Sandbox Code Playgroud)

谁能解释一下出了什么问题?也许为什么这是不可能的,或者如何使此代码正确?

PS 对于我的任务,我可以简单地使用IResult<TValue, TToken>没有任何约束的接口,但是我可以在不丢失约束的情况下实现它吗?

编译器错误:

(3:22) The type …
Run Code Online (Sandbox Code Playgroud)

c# generics generic-constraints

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

将 AutoFixture 与具有许多构造函数的类一起使用

我有两个不同的构造函数的类:

public class A {
    public A(B b) { ... }
    public A(C c) { ... }
}
Run Code Online (Sandbox Code Playgroud)

如何配置 AutoFixture 以便在此构造函数之间轻松切换?

我想 AutoFixture 创建一个A带有构造函数的实例,我明确指定了默认值(调用Register)的参数。

例如:

var fixture = new Fixture();
fixture.Register(() => new B("stateB"));
fixture.Create<A>(); // Calls constructor A(B b)
Run Code Online (Sandbox Code Playgroud)

我可以使用 AutoFixtre 实现这样的行为吗?或者您可以为配置构造函数建议另一种方法吗?

我知道,我可以Customize使用TemplateMethodQUery构造函数查询策略进行固定,但是这种方法看起来很混乱......

c# autofixture

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

在具有内存限制的 Docker 容器中运行 .NET Core 应用程序

我在 C# 的帮助下测试了 Docker 容器的不同限制。出于测试目的,我编写了一个简单的程序来生成不同类型的负载(CPU 密集型工作、内存分配、网络请求等)。

对于具有许多内存分配的场景,我编写以下代码:

try {
    var chunks = new byte[10][];
    for (var chunkId = 0; chunkId < 10; chunkId++) {
        Console.WriteLine($"Chunk: {chunkId}");
        var chunk = new byte[100 * 1024 * 1024];
        for (var i = 0; i < chunk.Length; i++)
            chunk[i] = (byte) (i % 256);
        chunks[chunkId] = chunk;
    }
}
catch (Exception) { // To capture OutOfMemoryException and pause the process
    Thread.CurrentThread.Join();
}
Run Code Online (Sandbox Code Playgroud)

此代码分配了 10 个 100MB 连续内存段(总共 1GB),但当我在具有内存限制的容器内运行它时,神奇的事情发生了:

$> docker run --memory=1g --memory-swap=1g <workload-image> …
Run Code Online (Sandbox Code Playgroud)

c# memory docker

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

在一行中用逗号分隔许多变量.C#

抱歉这个愚蠢的问题,但我找不到答案.那么,为什么我不能在C#中编写这样的代码:

int a = 10, b = 20, c = 30, d = 40;    
a = b, c = d;
Run Code Online (Sandbox Code Playgroud)

在C++中我可以编写它就可以了.

为什么它不能用C#编译?

c# comma

3
推荐指数
1
解决办法
1347
查看次数

对齐和SSE异常行为

我尝试与SSE合作,但遇到了一些奇怪的行为。

我编写了简单的代码,用于将两个字符串与SSE Intrinsics进行比较,然后运行它并起作用。但是后来我明白了,在我的代码中,指针之一仍然没有对齐,但是我使用了_mm_load_si128指令,它要求指针在16字节边界上对齐。

//Compare two different, not overlapping piece of memory
__attribute((target("avx"))) int is_equal(const void* src_1, const void* src_2, size_t size)
{
    //Skip tail for right alignment of pointer [head_1]
    const char* head_1 = (const char*)src_1;
    const char* head_2 = (const char*)src_2;
    size_t tail_n = 0;
    while (((uintptr_t)head_1 % 16) != 0 && tail_n < size)
    {                                
        if (*head_1 != *head_2)
            return 0;
        head_1++, head_2++, tail_n++;
    }

    //Vectorized part: check equality of memory with SSE4.1 instructions
    //src1 - …
Run Code Online (Sandbox Code Playgroud)

c c++ sse intel simd

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