![]() |
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是列的向量还是行的向量? |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |