gpt4 book ai didi

c++ - 具有不同数据类型的 std::move()

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:50 25 4
gpt4 key购买 nike

我有boost::array<int,8> array1我有 std::vector<int> temp(8);我如何执行 std::move()来自 boost::arraystd::vector , 我想避免 memcpy() .

最佳答案

您不能只是将容器的内容移动到 std::vector 中。 std::vector 不提供获取缓冲区所有权的方法。您必须将各个元素复制/移动到 std::vector 中。


您可以做的一件事是使用它的迭代器构造函数和 std::make_move_iterator 将单个元素移动到 vector 中.您不会看到 int 有任何好处,但如果类型的移动速度比复制速度快,那么您就会看到。看起来像

some_container foo;
// populate foo
std::vector<some_type> moved_into{std::make_move_iterator(std::begin(foo)),
std::make_move_iterator(std::end(foo))};

关于c++ - 具有不同数据类型的 std::move(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53398974/

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