cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance
cb46a_c++_STL_算法_逆转和旋转reverse_rotate
STL算法--变序性算法
reverse() 逆转
reverse_copy()一边复制一般逆转
rotate()旋转,某个位置开始前后交换位置
rotate(ivec2.begin(), ivec2.begin() + 2, ivec2.end());
1,2,3,4,5,6,7,8,9,
rotate后:
3,4,5,6,7,8,9,1,2,
rotate_copy()一边复制一般旋转
、、、
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition()
//ivec2(ivec);//写法错误
ivec2 = ivec;//这个可以,容器之间赋值
ivec2.assign(ivec.begin(), ivec.end());//这个可以,容器之间赋值
set<int>::iterator pos = iset.begin();
set迭代器是双向迭代器,不能pos=pos+1;只能用advance(pos,4);前进移动
其它一般迭代器是随机迭代器,可以使用pos=pos+1的方式。
#include <iterator>//输出流迭代器 ostream_iterator<int>()
/*cb46a_c++_STL_算法_逆转和旋转reverse_rotate
STL算法--变序性算法
reverse() 逆转
reverse_copy()一边复制一般逆转
rotate()旋转,某个位置开始前后交换位置
rotate(ivec2.begin(), ivec2.begin() + 2, ivec2.end());
1,2,3,4,5,6,7,8,9,
rotate后:
3,4,5,6,7,8,9,1,2, rotate_copy()一边复制一般旋转 、、、
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition() //ivec2(ivec);//写法错误
ivec2 = ivec;//这个可以,容器之间赋值
ivec2.assign(ivec.begin(), ivec.end());//这个可以,容器之间赋值
*/ #include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>//用于输出流迭代器 using namespace std; template <typename TT5>
void print1(TT5 &ilist)
{
for (TT5::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
{
cout << *iter << ' '; }
cout << endl;
} int main()
{
vector<int> ivec,ivec2; for (int i = ; i <= ; ++i)
ivec.push_back(i);
print1(ivec);
ivec2.push_back();
//ivec2(ivec);//写法错误
ivec2 = ivec;//这个可以,容器之间赋值
ivec2.assign(ivec.begin(), ivec.end());//这个可以,容器之间赋值
cout << "ivec2的值:" << endl;
print1(ivec2); cout << "逆转后的数据:" << endl;
reverse(ivec.begin(),ivec.end());
print1(ivec); cout << "一边复制一般逆转,直接传递给cout" << endl;
reverse_copy(ivec.begin(),ivec.end(),ostream_iterator<int>(cout," "));
cout << endl; cout << "逆转一部分数据,输出到cout" << endl; //print1(ivec);
reverse_copy(ivec.begin()+,ivec.end()-,ostream_iterator<int>(cout," "));
cout << endl;
cout << "旋转前:" << endl;
print1(ivec2);
cout << "旋转后:" << endl;
rotate(ivec2.begin(), ivec2.begin() + , ivec2.end());
print1(ivec2); //也可以这样:
rotate(ivec2.begin(), ivec2.end() - , ivec2.end());
print1(ivec2); cout << "先用find方法先找到一个数,然后再rotate," << endl;
rotate(ivec2.begin(), find(ivec2.begin(), ivec2.end(), ), ivec2.end());
print1(ivec2); return ;
}
set<int>::iterator pos = iset.begin();
set迭代器是双向迭代器,不能pos=pos+1;只能用advance(pos,4);前进移动
其它一般迭代器是随机迭代器,可以使用pos=pos+1的方式。
#include <iterator>//输出流迭代器 ostream_iterator<int>()
/*cb46b set<int>::iterator pos = iset.begin();
set迭代器是双向迭代器,不能pos=pos+1;只能用advance(pos,4);前进移动 其它一般迭代器是随机迭代器,可以使用pos=pos+1的方式。
#include <iterator>//输出流迭代器 ostream_iterator<int>()
*/
#include <iostream>
#include <algorithm>
#include <set>
#include <iterator>//输出流迭代器 using namespace std; void print3(int elem)
{
cout << elem << ' ';
}
template <typename TT6>
void print2(TT6 iset)
{
/*for (TT6::iterator iter = iset.begin(); iter != iset.end(); ++iter)
cout << *iter << ' ';
cout << endl;*/ //两种输出cout的方法,一个是for循环,一个for_each算法。
for_each(iset.begin(), iset.end(), print3);
cout << endl;
} int main()
{
set<int> iset;
for (int i = ; i <= ; ++i)
iset.insert(iset.end(),i);
print2(iset); cout << "使用rotate_copy" << endl;
set<int>::iterator pos = iset.begin();
advance(pos,);//迭代器前进移动3。类似:pos=pos+3
//set迭代器是双向迭代器,不能pos=pos+1;只能用函数advance(pos,4);前进移动
cout << "从pos位子开始前后交换位置。结果如下:" << endl;
rotate_copy(iset.begin(),pos,iset.end(),ostream_iterator<int>(cout," ")); cout << "也可以这样做。" << endl;
pos = iset.end();
advance(pos,-);//倒数第二个位置开始,整体前后交换
rotate_copy(iset.begin(),pos,iset.end(),ostream_iterator<int>(cout," ")); cout << "使用set的成员函数find来配合使用,位置交换功能" << endl;
rotate_copy(iset.begin(), iset.find(),iset.end(), ostream_iterator<int>(cout, " "));
return ;
}
cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance的更多相关文章
- cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...
- 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 ...
- cb50a_c++_STL_算法_局部排序partial_sort
cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...
- 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 ...
- cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if
cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...
- cb43a_c++_STL_算法_删除_(1)remove_remove_if
cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...
随机推荐
- PAT 1029 Median (25分) 有序数组合并与防坑指南
题目 Given an increasing sequence S of N integers, the median is the number at the middle position. Fo ...
- 剑指offer——数据结构
技术面重点:数组.字符串.链表.树.栈以及队列.
- 读Pyqt4教程,带你入门Pyqt4 _003
编程中的一个重要事情是布局管理,布局管理是如何在窗体上摆放窗口组件.可以有两种方式进行管理:绝对定位或使用布局类. 绝对定位 程序员用像素指定每个控件的位置和尺寸.使用绝对定位时,你必须理解几件事情. ...
- [JavaWeb基础] 008.Spring初步配置
框架简介: Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Develop ...
- 线程池 & 线程调度
线程池1. 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之 一执行每个提交的任务, 通常使用 Executors 工厂方法配置. 2. 线程池可以解决两个 ...
- css background-image 学习笔记
先给出图片原样 1.默认从从上到右下1比1 填充的,如果元素的高度和宽度小于图片,则只能显示部分图片.效果如下图 2.如果元素的高度和宽度大于图片,则默认会用图片平铺元素.效果如下图 3.可以是用ba ...
- 01 . 分布式存储之FastDFS简介及部署
分布式存储简介 现代的互联网已经进入大数据时代,每天都有数以万计的数据产生,这些数据的规模轻轻松松地可以达到几P的级别,传统的的单机存储早已捉襟见肘,根本无法满足大数据对存储系统的要求.这时,各种分布 ...
- jchdl - RTL实例 - Adder
https://mp.weixin.qq.com/s/9S29BCTcJfbpR62ALjSidA 加法器. 参考链接 https://github.com/wjcdx/jchdl/blob/ ...
- HTML元素跟随鼠标一起移动,网页中回到顶部按钮的实现
对象跟随鼠标: 1.对象css设置绝对定位position: absolute; 2.获取鼠标坐标: 3.通过鼠标坐标计算出对象坐标位置,并设置为css定位的位置: document.onmousem ...
- ActiveMQ 笔记(六)ActiveMQ的消息存储和持久化
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.持久化机制 1.Activemq持久化 1.1 什么是持久化: 持久化就是高可用的机制,即使服务器宕 ...