gpt4 book ai didi

c++ - 用字节序列初始化数组的有效方法?

转载 作者:太空狗 更新时间:2023-10-29 20:55:43 24 4
gpt4 key购买 nike

假设我有一个大小为 n 的字节序列(在“真实”代码中可能是 1..4 个元素),其中 n = 3为了这个例子:

char source[n] = { 'a', 'b', 'c' }

而且我有足够大小的内存范围来保存此序列的 m 个拷贝:

char * dest = new char[m*n]

(是的,我知道 std::vector,是的,它通常优于 new'ing 你自己的内存,不,它不是一个我目前正在处理的代码的选项——无论如何问题仍然是一样的。)

现在我想用 msource 拷贝初始化 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com