小编dkg*_*dkg的帖子

如何在golang中初始化嵌套struct数组的值

我的结构

type Result struct {
   name   string
   Objects []struct {
       id int
   }
}
Run Code Online (Sandbox Code Playgroud)

初始化此值

func main() {
   var r Result;
   r.name  = "Vanaraj";
   r.Objects[0].id = 10;
   fmt.Println(r)
}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误."恐慌:运行时错误:索引超出范围"

如何解决这个问题?

go

12
推荐指数
3
解决办法
3万
查看次数

是否有任何理由使用最新版本的 JNI?

文件指出

为了使用任何新的 JNI 函数,本机库必须导出返回 JNI_VERSION_1_2 的 JNI_OnLoad 函数。如果本机库不导出 JNI_OnLoad 函数,则 VM 假定该库仅需要 JNI 版本 JNI_VERSION_1_1。如果 VM 无法识别 JNI_OnLoad 返回的版本号,则无法加载本机库。

然后,如果我不定义JNI_OnLoad函数,使用的版本将是JNI_VERSION_1_1.

所以我的问题是,假设我使用的是 java 8,如果我不指定JNI_OnLoad因此使用版本JNI_VERSION_1_1而不是 ,我会遇到任何降级或进入某种“兼容模式”JNI_VERSION_1_6吗?

或者换句话说:即使我不使用最新添加的方法,是否有任何好处可以指定我想使用最新版本?

c++ java java-native-interface

6
推荐指数
0
解决办法
467
查看次数

函数声明顺序在头文件中是否重要?

我想知道标题中函数的声明顺序是否具有重要性.

让我们想象一下:我有两个使用相同标头定义的项目,并且由于一些不明原因必须复制标题.并且这些标题在声明函数顺序方面不一样.

所以我的第一个项目的标题是:

class A {
  someFunctionA();
  someFunctionB();
}
Run Code Online (Sandbox Code Playgroud)

和第二个项目中的标题:

class A {
  someFunctionB();
  someFunctionA();
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我在第二个项目中使用第一个项目中创建的实现(如动态库或其他),会发生什么?

我知道我应该为两个项目使用相同的头定义,我只是想知道编译器是否会为函数使用某种堆栈或者将它们重新排序.

c++ declaration c++11

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

使用g ++ 4.8.2,tan()计算比sin()/ cos()计算长两倍

我正在使用大量数学函数的算法,最近我们在一个Ubuntu系统上从Solaris平台上移植了g ++ 4.8.2下的代码.

令人惊讶的是,一些算法比以前花了很多时间.背后的原因是该std::tan()功能比做的长两倍std::sin()/std::cos().

用sin/cos代替tan可以大大减少相同结果的计算时间.我想知道为什么会有这样的差异.是因为标准库的实现?棕褐色功能不应该更有效吗?

我写了一个程序来检查函数的时间:

#include <cmath>
#include <iostream>
#include <chrono>

int main(int argc, char * argv[])
{
    using namespace std::chrono;

    auto start_tan = system_clock::now();

    for (int i = 0; i < 50000; ++i)
    {
        const double & a = static_cast<double>(i);
        const double & b = std::tan(a);
    }

    auto end_tan = system_clock::now();
    auto elapsed_time_tan = end_tan - start_tan;
    std::cout << "tan : ";
    std::cout << elapsed_time_tan.count() << std::endl;

    auto start_sincos = system_clock::now();

    for (int i …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 g++4.8

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

使用extern"C"在c ++程序中包含标题时出错

我正在研究一个需要与牧羊犬一起工作的学校项目.Sheepdog提供ac api,可以连接到牧羊犬服务器.首先,我使用以下内容创建c源文件(test.c):

#include "sheepdog/sheepdog.h"
#include <stdio.h>
int main()
{
struct sd_cluster *c = sd_connect("192.168.1.104:7000");
if (!c) {
    fprintf(stderr, "failed to connect %m\n");
    return -1;
}else{
    fprintf(stderr, "connected successfully %m\n");
}
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令编译没有错误

gcc -o test test.c -lsheepdog -lpthread

但我需要的是将它与c ++项目一起使用,所以我创建了一个cpp文件(test.cpp),其中包含以下内容:

extern "C"{
#include "sheepdog/sheepdog.h"
}
#include <stdio.h>
int main()
{
    struct sd_cluster *c = sd_connect("192.168.1.104:7000");
    if (!c) {
       fprintf(stderr, "failed to connect %m\n");
       return -1;
    }else{
       fprintf(stderr, "connected successfully %m\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我使用以下命令编译时:

g …

c c++ extern

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

在无序映射上使用find()<string,vector <string >>在C++中与有序映射相同

我有一个无序的字符串和字符串向量的地图,即un_map<string,vector<string> >.使用find函数搜索特定字符串时:

find((un_map[A].begin(),un_map[A].end(),field)==un_map[A].end())
Run Code Online (Sandbox Code Playgroud)

无序映射和有序映射的查找函数的执行时间是相同的.谁能解释为什么这样?到目前为止,我知道由于散列,无序地图应该比有序地图快得多.我想优化查找功能.请帮忙

c++ optimization unordered-map

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

Java var 推导因泛型而失败

考虑以下示例:

import java.lang.System;

interface Copy {
    
}

class Impl implements Copy {
    
    public <T extends Copy> T copy() {
        return (T)new Impl();
    }
    
    public void method() { System.out.println("hello"); }
    
}

public class MyClass {
    public static void main(String args[]) {
      var impl = new Impl();
      impl.method();
      var copy = impl.copy(); // deduction fails here
      copy.method();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让它在仍然使用 var 的同时推断类型?

注意:如果我更换var copy = impl.copy();Impl copy = impl.copy();编译器得到它。

使用 OpenJDK 11.0.6 运行

java

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