1
これをどうやって行うのか分かりません。私はこのようなものを作りたいと思っています:入れ子になったベクトルに要素を追加する
vector<int> L[MAX_V];
for(int i=1;i<N;++i){
scanf("%d %d",&u,&v);
--u; --v;
L[u].push_back(v);
L[v].push_back(u);
}
しかし、クロージャ語です。これまでのところ、私はこのようなものが付属していますが、働いていない:私はこのような何か書くと
(defn LoadTree []
(def n (read-string (read-line)))
(def tree (atom (into [] (repeat n []))))
(loop [x n]
(when (> x 1)
(let [input (read-string (str "[" (read-line) "]"))]
(swap! (get @tree (dec (get input 0))) conj (dec (get input 1))) <-Error
(swap! (get @tree (dec (get input 1))) conj (dec (get input 0))) <-Error
(recur (dec x))
)
)
)
'スワップを'(@treeない)木の上に直接動作するはずです。次に、assoc'、 'assoc-in'、' update'、 'update-in'のような関数族を使います。 –
また、ここでは 'def'を使わないでください!ローカルバインディングを作成するには 'let'を使います。 – Carcigenicate
また、再現しようとしているコードでは、変更可能なオブジェクトを使用しています。このコードを直接再現するのではなく、不変の思考を利用しようとするべきです。原子と地方のデフは "核の選択"であり、ここでは両方を使用しています。もう少し文脈がなければ、これをどのように書くべきかを正確に言うのは難しいだろう。 – Carcigenicate