小编Kyl*_*ick的帖子

最有效的计算词典索引的方法

任何人都可以找到任何可能更有效的算法来完成以下任务吗?:

对于整数0到7的任何给定排列,返回按字典顺序描述排列的索引(从0开始索引,而不是1).

例如,

  • 数组0 1 2 3 4 5 6 7应返回0的索引.
  • 数组0 1 2 3 4 5 7 6应返回索引1.
  • 数组0 1 2 3 4 6 5 7应返回索引2.
  • 数组1 0 2 3 4 5 6 7应返回5039的索引(即7!-1或factorial(7)-1).
  • 数组7 6 5 4 3 2 1 0应该返回40319的索引(即8!-1).这是最大可能的返回值.

我当前的代码如下所示:

int lexic_ix(int* A){
    int value = 0;
    for(int i=0 ; i<7 ; i++){
        int x = A[i];
        for(int j=0 ; j<i ; j++)
            if(A[j]<A[i]) x--;
        value += x*factorial(7-i);  // actual unrolled version doesn't have …
Run Code Online (Sandbox Code Playgroud)

c c++ permutation mathematical-optimization lexicographic

9
推荐指数
1
解决办法
419
查看次数

如何使用默认参数将函数传递给std :: thread?

所以我有gcc版本4.8.1,g ++版本4.6.4,使用标志:-std = c ++ 0x和-pthread.

我将问题简化为显示的代码并仍然得到原始错误.

我在下面编译,但当我取消注释线程"两"的两行时,我得到代码下面显示的错误消息

#include <iostream>
#include <thread>
using namespace std;

void print_int(int x=7);
void print_A(){
    cout << "A\n";
}

int main(){
    thread one (print_int,17);
    //thread two (print_int);
    thread three (print_A);

    one.join();
    //two.join();
    three.join();

    return 0;
}

void print_int(int x){
    cout << x << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我试图解析错误消息,但我仍然不知道发生了什么......

    In file included from /usr/include/c++/4.6/thread:39:0,
             from def_params.cpp:2:

    /usr/include/c++/4.6/functional: In member function ‘void std::_Bind_result<_Result, _Functor(_Bound_args ...)>::__call(std::tuple<_Args ...>&&, std::_Index_tuple<_Indexes ...>, typename std::_Bind_result<_Result, _Functor(_Bound_args ...)>::__enable_if_void<_Res>::type) [with _Res = void, _Args = {}, …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading default-parameters c++11

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

Jackson Kotlin/Java 中泛型类型的自定义反序列化

有了这个数据模型...

测试类.kt

data class TestClass (val bar: Optional<Double>?)
Run Code Online (Sandbox Code Playgroud)

我的目标是反序列化以下 json 值:

{"foo": 3.5}  --> foo = 3.5
{"foo": null} --> foo = Optional.empty() // This is currently my problem. foo is null and I can't seem to fix it
{}            --> foo = null
Run Code Online (Sandbox Code Playgroud)

我在这里看到了解决方案并尝试了这个,但我的“反序列化”方法中的断点似乎从未命中。

OptionalDeserializer.java

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import java.io.IOException;
import java.util.Optional;

public class OptionalDeserializer extends JsonDeserializer<Optional<?>> implements ContextualDeserializer {
    private JavaType valueType;

    @Override
    public JsonDeserializer<?> createContextual(DeserializationContext context, BeanProperty property) {
        this.valueType …
Run Code Online (Sandbox Code Playgroud)

java json optional jackson kotlin

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

使用 Kotlin 数据类在 Jackson 中区分 null 和缺失的属性

我想使用 Jackson 反序列化并稍后使用 Kotlin 的数据类序列化 jsons。保持显式 null 属性和原始 json 中省略的属性之间的区别很重要。

我有一个几乎完全由 Kotlin 数据类构建的大型域模型(50 多个类)。Kotlin 的数据类提供了许多有用的功能,我需要在程序的其他地方使用这些功能,因此我想保留它们而不是转换我的模型。

我目前让这段代码工作,但只适用于 Java 类或使用 Kotlin 类主体中声明的 Kotlin 属性,而不适用于构造函数中声明的属性。要使 Kotlin 的数据类实用程序函数起作用,必须在构造函数中声明所有属性。

这是我的对象映射器设置代码:

val objectMapper = ObjectMapper()

objectMapper.registerModule(KotlinModule())
objectMapper.registerModule(Jdk8Module())

objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS)
objectMapper.configOverride(Optional::class.java).includeAsProperty =
    JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, null)

objectMapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, true)

objectMapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true)

objectMapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true)
objectMapper.nodeFactory = JsonNodeFactory.withExactBigDecimals(true)
Run Code Online (Sandbox Code Playgroud)

这是我的测试类:

测试类1.java

public class TestClass1 {
    public TestClass1() {}
    public TestClass1(int intVal, Optional<Double> optDblVal) {
        this.intVal = intVal;
        this.optDblVal = optDblVal;
    }
    public Integer intVal;
    public Optional<Double> optDblVal;
}
Run Code Online (Sandbox Code Playgroud)

测试类.kt

data class TestClass2(val intVal: Int?, …
Run Code Online (Sandbox Code Playgroud)

serialization json optional jackson kotlin

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

检查C++类是否公开继承了带有匿名参数的模板类

此问题类似,如何在不指定模板参数的情况下测试类是否Impl公开继承模板类BaseTempl(即class Impl : public BaseTempl< ... >{ ... };)?

但是,与上述问题不同,如果继承不是公共的,我希望测试仍然编译(并返回false).

理想情况下,代码允许我做这样的事情:

class alpha : public BaseTempl< int >{};

class bravo : BaseTempl< int >{};

class charlie{};

class delta : public BaseTempl< int >, public charlie {};

class echo : public delta {};

int main(){
    publicly_inherits_from < alpha,   BaseTempl > (); // true
    publicly_inherits_from < bravo,   BaseTempl > (); // false
    publicly_inherits_from < charlie, BaseTempl > (); // false
    publicly_inherits_from < delta,   BaseTempl …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates c++11 c++14

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