任何人都可以找到任何可能更有效的算法来完成以下任务吗?:
对于整数0到7的任何给定排列,返回按字典顺序描述排列的索引(从0开始索引,而不是1).
例如,
factorial(7)-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) 所以我有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) 有了这个数据模型...
测试类.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) 我想使用 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) 与此问题类似,如何在不指定模板参数的情况下测试类是否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)