cb40a_c++_STL_算法_交换swap_ranges
swap_ranges(b,e,b2);
如果两个容器的数据数量不一致时,只交换一部分数据,
a里面3个,b里面5个,则只会交换3个,b里面还有两个不变

注意:下列两种方法也是交换算法
1.容器的swap()成员函数
2.赋值操作

 /*cb40a_c++_STL_算法_交换swap_ranges
swap_ranges(b,e,b2);
如果两个容器的数据数量不一致时,只交换一部分数据,
a里面3个,b里面5个,则只会交换3个,b里面还有两个不变 注意:下列两种方法也是交换算法
1.容器的swap()成员函数
2.赋值操作 */ #include <iostream>
#include <algorithm>
#include <vector>
#include <deque> using namespace std; int main()
{
vector<int> ivec;
deque<int> ideq; for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (int i = ; i <= ; ++i)
ideq.push_back(i);
cout << "vector数据" << endl;
for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "deque的数据" << endl;
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "vector与deque的数据交换" << endl; swap_ranges(ivec.begin(), ivec.end(), ideq.begin()); //再次显示:
cout << "vector数据" << endl;
for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "deque的数据" << endl;
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl; deque<int>::iterator pos;
pos = swap_ranges(ivec.begin(), ivec.end(), ideq.begin());
if (pos != ideq.end())
{
cout << "还存在没有交换完的数据: 位置是:" << *pos << endl;
} //再次显示:
cout << "vector数据" << endl;
for (vector<int> ::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "deque的数据" << endl;
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl; cout << "ideq里面:前面的三个数据和后面的三个数据相互交换" << endl;
swap_ranges(ideq.begin(), ideq.begin()+ , ideq.rbegin());
for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
cout << *iter << ' ';
cout << endl; vector<int>ivec1;
vector<int>ivec2;
ivec1.push_back();
ivec1.push_back();
ivec1.push_back(); ivec2.push_back();
ivec2.push_back();
ivec2.push_back(); cout << "交换前vector1的数据:" << endl;
for (vector<int> ::iterator iter = ivec1.begin(); iter != ivec1.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "交换前vector2的数据:" << endl; for (vector<int> ::iterator iter = ivec2.begin(); iter != ivec2.end(); ++iter)
cout << *iter << ' ';
cout << endl; ivec1.swap(ivec2);
cout << "ivec1.swap(ivec2);实际交换的是指针---,速度快。" << endl; cout << "交换后vector1的数据:" << endl;
for (vector<int> ::iterator iter = ivec1.begin(); iter != ivec1.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "交换后vector2的数据:" << endl; for (vector<int> ::iterator iter = ivec2.begin(); iter != ivec2.end(); ++iter)
cout << *iter << ' ';
cout << endl; return ;
}

cb40a_c++_STL_算法_交换swap_ranges的更多相关文章

  1. cb50a_c++_STL_算法_局部排序partial_sort

    cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...

  2. cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

    cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...

  3. cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance

    cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...

  4. cb41a_c++_STL_算法_填充新值fill_generate

    cb41a_c++_STL_算法_填充新值fill_generatefill(b,e,v)fill_n(b,n,v),填充n个vgenerate(b,e,p)generate_n(b,n,p) gen ...

  5. cb37a-_c++_STL_算法_复制元素copy_copy_backward

    cb37a-_c++_STL_算法_复制元素copy_copy_backward copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝copy_backward()//向后copy 注意: ...

  6. cb51a_c++_STL_算法_根据第n个元素排序nth_element

    cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...

  7. cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort

    cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...

  8. cb47a_c++_STL_算法_排列组合next_prev_permutation

    cb47a_c++_STL_算法_排列组合next_prev_permutation 使用前必须先排序.必须是 1,2,3或者3,2,1.否者结果不准确.如果, 1,2,4,6.这样数据不会准确nex ...

  9. cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据

    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...

随机推荐

  1. Collection接口和list,set子类

    Collection接口常用的子接口有:List接口.Set接口List接口常用的子类有:ArrayList类.LinkedList类Set接口常用的子类有:HashSet类.LinkedHashSe ...

  2. [注]一将功成万骨枯!App的七种死法

    一将功成万骨枯,这种事在有泡沫的行业总是会发生的.移动互联网尤甚.从<愤怒的小鸟>到<植物大战僵尸>.<捕鱼达人>.<唱吧>.<陌陌>……一 ...

  3. [书籍分享]0-008.商业模式新生代[Business Model Generation]

    封面 内容简介 <商业模式新生代>内容简介:当你愉快的看完第一章:商业模式画布,赫然发现这些构成要素全都交织成一幅清晰的图像在脑海中呈现,它们如何互相影响.如何交互作用全都历历在目.利用商 ...

  4. nmap script 总结

    一些常用脚本用法 nmap 脚本一些支持笼统扫描 usag. nmap -F --script auth 10.0.0.1 auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域 ...

  5. Rocket - debug - TLDebugModuleInner - Hart Bus Access

    https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...

  6. 字符串去除空格的方式(用replace()实现)

    去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.replace(/^\s+|\s+$/g,"") ...

  7. Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...

  8. 从0开始探究vue-双向绑定原理

    理解 vue是一个非常优秀的框架,其优秀的双向绑定原理,mvvm模型,组件,路由解析器等,非常的灵活方便,也使开发者能够着重于数据处理,让开发者更清晰的设计自己的业务. 双向绑定,就是数据变化的时候, ...

  9. Java实现 蓝桥杯 算法训练 区间k大数

    算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二 ...

  10. Java实现 蓝桥杯VIP 算法提高 开灯游戏

    算法提高 开灯游戏 时间限制:1.0s 内存限制:256.0MB 问题描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). ...