假设我有一个大小为 n
的字节序列(在“真实”代码中可能是 1..4 个元素),其中 n = 3
为了这个例子:
char source[n] = { 'a', 'b', 'c' }
而且我有足够大小的内存范围来保存此序列的 m
个拷贝:
char * dest = new char[m*n]
(是的,我知道 std::vector
,是的,它通常优于 new
'ing 你自己的内存,不,它不是一个我目前正在处理的代码的选项——无论如何问题仍然是一样的。)
现在我想用 m
个 source
拷贝初始化 dest
。有多种方法可以对单个值进行 m
次拷贝,但显然没有一种方法可以对 sequence 值进行 m
次拷贝。当然,我可以使用嵌套循环:
for ( unsigned i1 = 0; i1 < m; ++i1 )
{
for ( unsigned i2 = 0; i2 < n; ++i2 )
{
dest[ i1 * n + i2 ] = source[ i1 ];
}
}
但不知何故,这缺乏通常告诉我我得到了问题的“正确”解决方案的所有技巧。
C++ 是否为此提供了一些更有效的方法?
最佳答案
这会给你一种正确的感觉吗? (现场观看here)
auto it = dest;
while ((it = std::copy(source, source + n, it))
!= dest + m * n);
关于c++ - 用字节序列初始化数组的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107055/