函数原型
templateinline _BidIt2 copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
像 copy() 那样复制元素,但是从最后一个元素开始直到第一个元素。
first last 容器首、尾迭代器
dest 目标容器迭代器
#includemove_backward#include #include #include #include #include int main() { std::vector a{ 3, 6, 4, 7, 8, 10 }; std::vector b(a.size()); std::copy_backward(std::begin(a), std::end(a) - 3, std::end(b)); std::for_each(std::begin(a), std::end(a), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; std::for_each(std::begin(b), std::end(b), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; return -1; } //输出 3, 6, 4, 7, 8, 10, 0, 0, 0, 3, 6, 4,
函数原型
templateinline _BidIt2 move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
参数
#includeinplace_merge#include #include #include #include #include int main() { std::vector a{ 3, 6, 4, 7, 8, 10 }; std::vector b(a.size()); std::move_backward(std::begin(a), std::end(a) - 3, std::end(b)); std::for_each(std::begin(a), std::end(a), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; std::for_each(std::begin(b), std::end(b), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; return -1; } //输出 3, 6, 4, 7, 8, 10, 0, 0, 0, 3, 6, 4,
函数原型
templateinline void inplace_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last) template inline void inplace_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred)
参数
first: 双向迭代器,要合并并排序到单个范围的第一个中的第一个元素。
last:双向迭代器,要合并并排序到单个范围的的第二个中的最后一个元素。
middle: 双向迭代器,要合并并排序到第二个中的第一个元素的位置。
comp: 二元谓词函数,它接受两个参数,如果两个参数是有序的,则返回真,否则返回假。
#include#include #include #include #include #include int main() { std::vector v1 = { 5, 8, 15, 20, 25 }; std::vector v2 = { 10, 40, 8, 20, 10 }; std::vector v3(v1.size() + v2.size()); std::vector ::iterator it = copy(v1.begin(), v1.end(), v3.begin()); copy(v2.begin(), v2.end(), it); inplace_merge(v3.begin(), it, v3.end()); std::for_each(std::begin(v1), std::end(v1), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; std::for_each(std::begin(v2), std::end(v2), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; std::for_each(std::begin(v3), std::end(v3), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; std::vector vec1 = { 5,10,15,20,25 ,0,10,10,25,30 }; std::inplace_merge(vec1.begin(), vec1.begin() + 5, vec1.end()); std::for_each(std::begin(vec1), std::end(vec1), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; return -1; } //输出 5, 8, 15, 20, 25, 10, 40, 8, 20, 10, 5, 8, 10, 15, 20, 40, 8, 20, 10, 25, //可以看出,归并的两个部分分别是first到middle,和middle到last. 0, 5, 10, 10, 10, 15, 20, 25, 25, 30,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)