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.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...
随机推荐
- tp5插入百万条数据处理优化
<?php namespace app\index\controller; use think\Controller; use think\Db; class Charu extends Con ...
- 看完这篇还不懂Redis的RDB持久化,你们来打我!
一.为什么需要持久化 redis里有10gb数据,突然停电或者意外宕机了,再启动的时候10gb都没了?!所以需要持久化,宕机后再通过持久化文件将数据恢复. 二.优缺点 1.rdb文件 rdb文件都是二 ...
- [安卓自动化测试] 001.UIAutomator初探
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 12 . Python3之网络编程
互联网的本质 两台计算机之间的通信与两个人打电话原理是一样的. # 1. 首先要通过各种物理连接介质连接 # 2. 找准确对方计算机(准确到软件)的位置 # 3. 通过统一的标准(一般子协议)进行数据 ...
- C语言 俄罗斯方块demo
这是我的第一篇随笔,当然是发我写的第一个游戏啦! 大一(本人现在大二)寒假过完年,在家待着想起放假前计划写一个游戏的,因为本人立志走游戏开发这条路,加上大一上册学了C语言,就想写个游戏练练手.想了很久 ...
- PAT1067 试密码 (20分)——测试点4分析 一个易错点
1067 试密码 (20分) 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实现这个小功能. 输入格式: 输入在第一行给出一个密码( ...
- 「MoreThanJava」一文了解二进制和CPU工作原理
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- ClickHouse源码笔记1:聚合函数的实现
由于工作的需求,后续笔者工作需要和开源的OLAP数据库ClickHouse打交道.ClickHouse是Yandex在2016年6月15日开源了一个分析型数据库,以强悍的单机处理能力被称道. 笔者在实 ...
- .net core 基于AspNetCore.Identity+Identityserver4用户的权限管理
一般权限控制,是先给角色分配对应权限,然后再给用户分配角色:总权限应该是在代码编写的时候就已经固定了,例如有个用户更新的接口,这里就会诞生一个用户更新的权限,接口在权限就在,没有接口也就没有了这个权限 ...
- Java-接口概念辨析
https://mp.weixin.qq.com/s/HQZhlS-ffgEMqhB2rHax1w 1. 类 是属性成员和方法成员的集合:2. 父类 是子类相同属性成员和方法成 ...