2017-11-15 5 views
-2

C++とJavaの間で特定のコード行をどのように変換するかについて簡単に質問します。私はニューラルネットワークについて学んできました。私はJavaで最も経験が豊富な言語で自分自身を書くことを始めました。コードをC++からJavaに変換するのはこれまでのところかなり簡単でしたが、少し問題があります。私は、この特定のコード行をJavaの同等のものに変換する方法に困惑しています。検索でこの問題に固有のものは何も見つかりません。Javaでこの構文に相当するものは何ですか?

Struct SNeuron { 
    //the number of inputs into the neuron 

    int m_NumInputs; 
    //the weights for each input 
    vector<double> m_vecWeight; 
    //ctor 
    SNeuron(int NumInputs); 
}; 

と私のコードは次のとおりです:

元のコードがある

public class SNeuron { 

public int m_NumInputs; // the number of inputs into the neuron 
public ArrayList<Double> m_vecWeight = new ArrayList<Double>(); // the weights for each input 
// ctor 

私の質問は、どのように私は変換しない:

SNeuron(int NumInputs); 

をそのJavaの同等に?私が読んだことから、StructsはJavaの機能ではないようですので、実際に使用されているコードの行を正確に理解するために少し苦労しています。

+0

この関数はどのように呼び出されますか?これはJavaでも同じです。 :) – Rakete1111

+0

これはコンストラクタです。私は彼らがJavaで同じ構文を使用しているという印象を受けました。 – Angew

+0

クラスと構造体の唯一の違いは、デフォルトのアクセス保護レベルです。 – molbdnilo

答えて

1
public class SNeuron 
{ 

// the number of inputs into the neuron 

public int m_NumInputs; 

// the weights for each input 

public List<Double> m_vecWeight = new ArrayList<Double>(); 

// ctor 
SNeuron(int NumInputs) { 
    m_NumInputs = NumInputs; 
} 
+0

これは完璧です!私はそれを体に与えなければならないと感じていたが、身体を空のままにしているとは思わなかった。どうもありがとうございました! –

+0

あなたが迷っている場合は、歓迎します。 – Ashwel

0

C++では、SNeuron(int NumInputs);は、intを取るコンストラクタの宣言であり、これはクラス宣言に含まれています。

あなたはJavaではそうしません。実際には、すべてのコンストラクタとすべての関数がクラス宣言にインライン展開されています。言い換えれば

SNeuron(int NumInputs); // within the class declaration 
SNeuron::SNeuron(int NumInputs) : m_NumInputs(NumInputs){} // In a translation unit 

マップ

SNeuron(int NumInputs) { 
    m_NumInputs = NumInputs; 
} 

のが、Java フィールドのm_を使用してが特有であることに注意してください。コード内のコメントを考える

+2

@Angew:コーヒーが必要だということです。あなたも1つをしたいですか? – Bathsheba

+1

いいえ、ありがとう:-)私はおそらく地球上で唯一のプログラマですが、私はコーヒーを飲まない。 – Angew

1

、私は同等であるかなり確信している:あなたは本当にList<Double>を使用したくない

public class SNeuron { 
    public final double[] weights; 

    public SNeuron(int numInputs) { 
     weights = new double[numInputs]; 
    } 
} 

、それははるかに遅くなると多くのメモリがかかります - このようなリストの各二重は、すべての関連するオーバーヘッドを持つ本格的なオブジェクトになります。

関連する問題