我接管了一个带有变量的程序:静态 uint_8t *buffer全局声明我需要填充,但不是只有一个重复值。它不必太“随机”,只要完整而不重复。我正在使用此缓冲区在 HDD 上运行 read10 scsi 命令测试。我正在使用visual c ++ 2012。提前感谢您的帮助!
问问题
1101 次
3 回答
7
如果随机性不太重要,您可以考虑std::rand
使用方便的算法:
std::generate_n(buffer, BUFFER_SIZE, std::rand);
缓冲区的元素类型是无符号的这一事实意味着溢出是安全的。这是一个示例,尽管我怀疑您的代码可能有点不同;)。
于 2013-05-29T21:34:13.000 回答
1
如果您不介意这些值是连续的,则可以使用std::iota
:
#include <numeric>
std::iota(buffer, buffer + SIZE, 0);
这将用从 0 开始的连续值填充它。
于 2013-05-29T21:37:09.167 回答
0
const size_t N = 100; // your number of elements
for(size_t i = 0; i < N; ++i)
{
size_t tmp = i % std::limits<uint8_t>::max();
buffer[i] = static_cast<uint_8t>(tmp)
}
于 2013-05-29T21:38:45.247 回答