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未知。