cb40a_c++_STL_算法_交换swap_ranges
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的更多相关文章
- cb50a_c++_STL_算法_局部排序partial_sort
cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...
- cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...
- cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance
cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...
- 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 ...
- cb37a-_c++_STL_算法_复制元素copy_copy_backward
cb37a-_c++_STL_算法_复制元素copy_copy_backward copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝copy_backward()//向后copy 注意: ...
- cb51a_c++_STL_算法_根据第n个元素排序nth_element
cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...
- 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) ...
- cb47a_c++_STL_算法_排列组合next_prev_permutation
cb47a_c++_STL_算法_排列组合next_prev_permutation 使用前必须先排序.必须是 1,2,3或者3,2,1.否者结果不准确.如果, 1,2,4,6.这样数据不会准确nex ...
- cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...
随机推荐
- WordPress 设置图片的默认显示方式(尺寸/对齐方式/链接到)
在文章中插入图片时,我们几乎每次都要设置图片的尺寸.对齐方式和链接方式,是比较耗时费力的.其实我们可以给这几个选项设置默认参数,省去我们每次设置的麻烦. 可以将下面的代码添加到主题的 function ...
- [安卓基础] 004.运行app
运行你的app 这篇课程会教你: 1.如何在设备上运行你的app. 2.如何在模拟器上运行你的app. 当然,在学习之前,你还需要知道: 1.如何使用设备. 2.如何使用模拟器. 3.管理你的项目. ...
- Pytorch分类和准确性评估--基于FashionMNIST数据集
最近在学习Pytorch v1.3最新版和Tensorflow2.0. 我学习Pytorch的主要途径:莫烦Python和Pytorch 1.3官方文档 ,Pytorch v1.3跟之前的Pytorc ...
- 使用Burpsuite对手机抓包的配置
之前使用dSploit的时候就一直在想怎么对手机进行抓包分析,前两天使用了Burpsuite神器,发现通过简单的配置就可以抓手机app的数据包了,进而分析手机app的流量. 配置环境: 1.win7下 ...
- python常见面试题讲解(十三)字串的连接最长路径查找
输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串. 示例1 ...
- 【HIVE & Spark】将hive引擎换成Spark,运行速度快!怎么换?请看本文
本教程仅仅是使用spark,能在hive用就行. 1.下载Spark; 2.WinSCP上传spark压缩包到虚拟机: 3.tar -zxvf spark-2.3.3-bin-without-hado ...
- Java实现 LeetCode 676 实现一个魔法字典(暴力)
676. 实现一个魔法字典 实现一个带有buildDict, 以及 search方法的魔法字典. 对于buildDict方法,你将被给定一串不重复的单词来构建一个字典. 对于search方法,你将被给 ...
- Java实现 LeetCode 435 无重叠区间
435. 无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触& ...
- Java实现 LeetCode 52 N皇后 II
52. N皇后 II n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回 n 皇后不同的解决方案 ...
- Java实现哥德巴赫猜想
验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和.要求输入一个整数,输出这个 数能被分解成哪两个质数的和. eg : 14 14=3+11 14=7+7 public class T ...