gpt4 book ai didi

c++ - 在 C++11 中将 std::vector 移动到 std::deque

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:05 26 4
gpt4 key购买 nike

如果我有std::dequestd::vector并想将它们组合成 std::deque ,我可以通过以下方式做到这一点:

typedef int T; // type int will serve just for illustration
std::deque< T > deq(100); // just some random size here
std::vector< T > vec(50);
// ... doing some filling ...
// now moving vector to the end of queue:
deq.insert(
deq.end(),
std::make_move_iterator( vec.begin() ),
std::make_move_iterator( vec.end() )
);
std::cout << deq.size() << std::endl;

我们知道 vector 的大小,但我们不能在 std::deque 末尾预留内存使用前 std::deque.insert(...) .那么这是移动std::vector的所有元素的最快方法吗?到 std::deque 结束?还是我错过了什么?

谢谢。

最佳答案

试试这个:

using T = int; // type int will serve just for illustration

std::deque< T > deq(100); // just some random size
std::vector< T > vec(50);
// ... doing some filling ...
// now moving vector to the end of queue:
std::move(
begin(vec),
end(vec),
back_inserter(deq)
);
std::cout << deq.size() << std::endl;

请记住,这仍然会将 vector 复制到 deq 的末尾。它只是对 vec 的每个元素应用 std::movedeq 的末尾。只要 T 只是一个 int,这与将 vector 复制到 deq 的末尾没有太大区别。

关于c++ - 在 C++11 中将 std::vector 移动到 std::deque,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844999/

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