【发布时间】:2018-04-01 05:58:25
【问题描述】:
我想循环几个随机组合。目前,我在循环外定义了一个向量 1 到 n 的向量 v,在循环内随机播放 v 并在循环内定义一个新向量 combination。
int k = 50;
int n = 100;
int sampleSize=100;
std::vector<int> v(n);
//std::vector<int> combination(k); //Would it be better to declare here?
std::iota(v.begin(), v.end(), 0);
unsigned seed = 42;
for (int i=0; i<sampleSize; i++) {
std::shuffle (v.begin(), v.end(), std::default_random_engine(seed));
std::vector<int> combination(v.begin(), v.begin() + k);
};
在 for 循环的每次迭代中我都再次定义 combination 对我来说似乎很奇怪。在 for 循环之外声明 combination 然后在每次迭代中为其分配新值是否有意义?如果是这样,将这些新值分配给combination 的好方法是什么?到目前为止,我只使用push_back() 将新值附加到向量。
【问题讨论】:
-
最好在循环外声明向量,因为在循环的每次迭代中都会调用向量的析构函数。
-
你不显示所有代码,但你不能在循环中使用
v本身吗?
标签: c++ loops for-loop vector redeclare