STL_算法_逆轉(reverse,reverse_copy)
阿新 • • 發佈:2017-06-08
lin line on() mes pad rect iterator esp 區間
C++ Primer 學習中。。
C++ Primer 學習中。。。
簡單記錄下我的學習過程 (代碼為主)
//全部容器適用
reverse(b,e) //逆轉區間數據
reverse_copy(b,e,b2)
/**------http://blog.csdn.net/u010579068------**/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<algorithm>
using namespace std;
/*****************************************
//全部容器適用
reverse(b,e) //逆轉區間數據
reverse_copy(b,e,b2)
*****************************************/
/**----------------------------------------------------------------------------------
STL算法 - 變序性算法
reverse() //逆轉
reverse_copy()
rotate() //旋轉
rotate_copy()
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition()
----------------------------------------------------------------------------------**/
/*************************************************************************************
std::reverse 全部排序容器適用 algorithm
--------------------------------------------------------------------------------------
<algorithm>template <class BidirectionalIterator>
void reverse ( BidirectionalIterator first, BidirectionalIterator last);
//eg:
template <class BidirectionalIterator>
void reverse ( BidirectionalIterator first, BidirectionalIterator last)
{
while ((first!=last)&&(first!=--last))
swap (*first++,*last);
}
*************************************************************************************/
/*************************************************************************************
std::reverse_copy 全部排序容器適用 algorithm
--------------------------------------------------------------------------------------
template <class BidirectionalIterator, class OutputIterator>
OutputIterator reverse_copy ( BidirectionalIterator first,
BidirectionalIterator last, OutputIterator result );
//eg:
template <class BidirectionalIterator, class OutputIterator>
OutputIterator reverse_copy ( BidirectionalIterator first,
BidirectionalIterator last, OutputIterator result )
{
while (first!=last) *result++ = *--last;
return result;
}
*************************************************************************************/
int main()
{
vector<int> myvector;
vector<int>::iterator it;
// set some values:
for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
reverse(myvector.begin(),myvector.end()); // 9 8 7 6 5 4 3 2 1
// print out content:
cout << "myvector contains:";
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << " " << *it;
cout << endl;
int myints[] = {1,2,3};
cout << "The 3! possible permutations with 3 elements:\n";
sort (myints,myints+3);
reverse (myints,myints+3);
do {
cout << myints[0] << " " << myints[1] << " " << myints[2] << endl;
} while ( prev_permutation (myints,myints+3) );
/**-------------------------------------------------------------------------------------**/
// int myints[] = {1,2,3,4,5,6,7,8,9};
deque<int> mydeque;
deque<int>::iterator iq;
mydeque.resize(9);
reverse_copy (myvector.begin(), myvector.end(), mydeque.begin());
// print out content:
cout << "mydeque contains:";
for (iq=mydeque.begin(); iq!=mydeque.end(); ++iq)
cout << " " << *iq;
cout << endl;
return 0;
}
reverse(b,e) //逆轉區間數據
reverse_copy(b,e,b2)
STL_算法_逆轉(reverse,reverse_copy)