私はニューラルネットワークを作成しようとしています。私はこれまで他の言語でやっていたし、行列ライブラリを使っていた。しかし、私はそれをよりよく理解するために、私自身でそれを作りたかったのです。しかし、私はクラスに問題がありました。独自のメンバのメンバーベクトルを持つクラス
私はC++でこれをやっています。
私はANNというクラスを持っています。それは層のベクトルを持っています。 レイヤはNodeというクラスです。 しかし、ノード内で前のノードのレイヤにアクセスしたいので、このノードの値を計算できます。
私はクラスを持っているかどうかは知っていますが、そのメンバーの1つがそれ自身であることをポインタにする必要があります。 ex。
class Node{
public:
// Public methods/members here
private:
Node *previousNode;
}
しかし、これは私が望むものではありません。 私は*previousNode
がここノード
の祖先になりたいが、私は
class Node{
public:
//Public functions/members here
private:
vector <Node*> previousLayer;
}
は今、私はスマートポインタを使用する方が良いでしょう。このような状況で聞いた何をしたいの例です。私はそれが何であるか正確にはわかりませんが、基本的にはそれらを管理するポインタのラッパーです。私はまた、スマートポインタが使用された主な理由は、いくつかのポインタがNULLのまま残っているか、使用後に削除されないためだと思ったが、このクラスのスコープがプログラム終了時に終わる可能性があります。
私が正しくあなたの質問を解釈していた場合は私の質問は、
、より良い使用 'のstd ::現在の層におけるunique_ptr' –
@GuillaumeRacicotいくつかのノードは、そう、前の層内の同じノードを指しますユニークな所有権はここに行く方法ではありません。おそらく、ノードを他の場所に所有させ、ネットワーク構造をオブザーバポインタのベクトルにする方がよいでしょう。 –
ありがとうございます。ここで@M .Mが述べているように、共有所有権が使用されます。残念ながら、各ノードの目的が不明な場合は、私はまだこれらにアクセスする方法が不思議です。私はベクター内の項目にアクセスする方法を理解していますが、ポインタやスマートポインタのために特別なものを逆参照する必要がありますか? –