#include <iostream>
#include <algorithm>
#include <vector>
//交换元素
int main()
{
/************************************************************************/
//swap
/************************************************************************/
//交换两数
/*
template<class Type>
void swap(
Type& _Left,
Type& _Right
);
*/
int a = 3, b = 5;
//a = 3, b = 5
std::cout << "a = " << a << ", b = " << b << std::endl;
std::swap(a, b);
//a = 5, b = 3
std::cout << "a = " << a << ", b = " << b << std::endl;
std::cout << std::endl;
/************************************************************************/
//iter_swap:不推荐使用
/************************************************************************/
//iter_swap(a,b)等价于swap(*a, *b);
/*
template<class ForwardIterator1, class ForwardIterator2>
void iter_swap(
ForwardIterator1 _Left,
ForwardIterator2 _Right
);
*/
a = 3, b = 5;
//a = 3, b = 5
std::cout << "a = " << a << ", b = " << b << std::endl;
std::iter_swap(&a, &b);
//a = 5, b = 3
std::cout << "a = " << a << ", b = " << b << std::endl;
std::cout << std::endl;
/************************************************************************/
//swap_ranges
/************************************************************************/
//swap_ranges交换两个大小相同的区间
/*
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator2 swap_ranges(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2
);
*/
std::vector<int> iv1(3,3); //3 3 3
std::vector<int> iv2(4,6); //6 6 6 6
std::vector<int> iv3(9,2); //2 2 2 2 2 2 2 2 2
std::vector<int> iv4(6,1); //1 1 1 1 1 1
std::swap_ranges(iv1.begin(), iv1.end(), iv2.begin());
typedef std::vector<int>::iterator it;
it iv3Start = iv3.begin();
it iv3End = iv3.end();
it iv4Start = iv4.begin();
std::advance(iv3Start, 3);
std::advance(iv3End,-1);
std::advance(iv4Start,1);
std::swap_ranges(iv3Start, iv3End, iv4Start);
std::vector<std::vector<int> > iv;
iv.push_back(iv1);
iv.push_back(iv2);
iv.push_back(iv3);
iv.push_back(iv4);
std::for_each(iv.begin(), iv.end(), [](const std::vector<int> v)
{
std::for_each(v.begin(), v.end(),[](const int &i)
{
std::cout << i << " ";
});
std::cout << std::endl;
});
/*结果
6 6 6
3 3 3 6
2 2 2 1 1 1 1 1 2
1 2 2 2 2 2
*/
return 0;
}
====================打个广告,欢迎关注====================
QQ: | 412425870 |
csdn博客: | http://blog.csdn.net/caychen |
码云: | https://gitee.com/caychen/ |
github: | https://github.com/caychen |
点击群号或者扫描二维码即可加入QQ群: | |