|
|
1
2
如果你不需要B按随机顺序排列,那么随机洗牌比你需要的工作更多。 如果“stl”是指sgi的stl,那么使用 random_sample .
如果“STL”指的是C++标准库,那么你就没有随机抽样。您可能希望复制实现,但在第一个
请注意,这两者都在适当的位置修改了序列。根据您实际希望a和b结束的位置,以及谁拥有原始文件,这可能意味着您最终要对每行进行两次复制-一次将其放入可变容器中进行随机播放,然后再次将其放入最终目的地。这比需要的内存和处理时间更多。为了解决这个问题,你也许可以
我不确定这会更快或使用更少的内存,但我怀疑是这样。
标准
[编辑:Alex Martelli最近抱怨“STL”这个词的滥用意味着C++标准库。在这种情况下,它确实有区别:-)] |
|
|
2
1
我认为 random_shuffle 指数有意义。 如果您需要避免复制单个行的开销,并且不介意共享数据,那么您可以使A和B矩阵成为指向原始矩阵中行的指针的向量。 |
|
|
3
0
最简单的方法是:使用一个随机整数生成器,在一个单独的容器中对每行的偏移量进行排队(假设每行在每列向量中的偏移量相同)。您使用的容器将更多地取决于其最终用途。(记住要注意尺寸限制,并将偏移容器的寿命与矩阵本身联系起来)。 编辑:用偏移替换指针-更合理更安全。 奥利格: 快速问:每个(内部)向量是一行还是一列? 也就是说,m是列的向量还是行的向量? |
|
|
Julia · 矢量中相加为总和S的值的数量 3 年前 |
|
|
C_Rod · 在模板方法中确定STL容器中项目的数据类型 4 年前 |
|
|
quantumwell · 将空向量放入std::map() 8 年前 |
|
|
OutOfBound · 对未初始化内存使用算法的优点 8 年前 |
|
|
DarthRubik · 在使用列表删除之后,迭代器如何不无效 8 年前 |