Vector 向嵌套向量添加元素
我不知道怎么做,也许有人能帮我?我想做这样的东西:Vector 向嵌套向量添加元素,vector,clojure,io,Vector,Clojure,Io,我不知道怎么做,也许有人能帮我?我想做这样的东西: 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 foo [num-reads size] (loop [i num-reads, r (vec (repeat size []))]
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 foo [num-reads size]
(loop [i num-reads, r (vec (repeat size []))]
(if (zero? i)
r
(let [[u v] (repeatedly read)]
(recur (dec i), (-> r (update u conj v) (update v conj u)))))))
向量L[MAX_V];
对于(inti=1;i,我会这样写:
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 foo [num-reads size]
(loop [i num-reads, r (vec (repeat size []))]
(if (zero? i)
r
(let [[u v] (repeatedly read)]
(recur (dec i), (-> r (update u conj v) (update v conj u)))))))
swap!
应该直接在树上工作(而不是@tree)。然后看看如何使用函数系列中的一个:assoc
,assoc in
,update
,updatein
。另外,需要说明的是:不要在此处使用def
!使用let
创建本地绑定。还要注意,您尝试复制的代码使用可变对象。而不是尝试复制直接复制这段代码,你应该尝试使用不变的思维。原子和局部DEF是“核选项”,您在这里同时使用这两种语言。如果没有更多的上下文,就很难确切地说您应该如何编写它。我不认为真正需要上下文来理解如何实现它。很清楚C代码想要做什么,编写一个生成相同输出的Clojure函数并不完全容易,但没有特殊性r未知。