gpt4 book ai didi

c++ - 将数组中的元素移动 N 个元素

转载 作者:行者123 更新时间:2023-11-30 04:00:13 27 4
gpt4 key购买 nike

我有一个数组,其中每个“元素”由 4 个连续值组成。更新后,我将数组向末尾移动 4 个值,并在开头插入 4 个新值。

类次:

int m = 4;
for (int i = _vsize - 1; i + 1 - m != 0; i--){
_varray[i] = std::move(_varray[i - m]);
}

插入:

memcpy(&_varray[0], glm::value_ptr(new_element), 4 * sizeof(float));

其中 new_element 属于 glm::vec4 类型,包含所述 4 个新值。

有什么改进建议吗?

(现在我只移动一个元素,但希望能够灵活地移动 8 次,而不必将其放入循环中)

谢谢。

最佳答案

你可以试试std::copy_backward .您想要将一系列值复制到同一容器中的另一个范围。由于范围重叠并且您正在向右复制,因此您不能使用常规的std::copy,而必须使用std::copy_backward .

int m = 4; // make this a multiple of your 'element' size
std::copy_backward(&_varray[0], &_varray[_vsize - m], &_varray[_vsize]);

还有std::move_backward但这并不重要,因为您的 float 值不可移动。

关于c++ - 将数组中的元素移动 N 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26434416/

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