std::vector<int> srce {1, 2, 3, 4}; std::deque<int> dest {5, 6, 7, 8}; std::move(std::begin(srce), std::end(srce), std::back_inserter(dest));这里会将 data 的最后 6 个元素移到容器的开头。它能够正常工作是因为目的地址在源序列之外。在移动之后,无法保证最后两个元素的值。这里它们虽然被移除了,但同样可以将它们重置为已知的值一一例如 0。
std::vector<int> data {1, 2, 3, 4, 5, 6, 7, 8}; std::move(std::begin(data) + 2, std::end(data), std::begin(data)); data.erase(std::end(data) - 2, std::end(data)); // Erase moved elements std::copy(std::begin (data), std::end(data), std::ostream_iterator<int> {std::cout, " "}); std::cout << std::endl; // 3, 4, 5, 6, 7, 8这里使用 deque 容器只是为了换个容器使用。将前 6 个元素向右移动两个位置。在移动操作后,值无法得到保证的元素会被重置为 0。最后一行展示了这个操作的结果。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有