如果只有一个n
项(x1,x2,x3,...,xn)
列表,则可以轻松迭代列表中的所有唯一对,即(x1,x2), (x1,x3), ..., (x1,xn), (x2,x3), (x2,x4), ... ,(x2,xn),...,(x[n-1],xn)
。作为一个实际示例,这可以是STL向量x
,并且迭代
for (auto i=0; i<n; i++) {
for (auto j=i+1, j<n; j++) {
// Do something with x[i],x[j]
}
}
我的问题:如果Do something
部分可以通过添加一个甚至几个元素来增长向量x
,该怎么办?例如,在评估(x1,x2)
的循环后,新长度可能为n+1
,并带有新元素x[n+1]
。现在我也想在同一个循环中考虑对(x1,x[n+1]),(x2,x[n+1]),...,(xn,x[n+1])
。这是可能的,如果是的话,怎么样?
我认为另外两个部分是:评估的顺序无关紧要(即,当我考虑成对x[n+1]
时无关紧要)并且对的顺序无关紧要{ {1}}或(x[n+1],x1)
。
谢谢!