#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <time.h>
#include <Windows.h>
#include <iostream>
#include <cassert>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
#include <functional>
using namespace std;
vector<int> intVector(10), intVector1(10);
vector<double> vdouble(10);
int iarray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
double darray[10] = {1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9};
int _tmain(int argc, _TCHAR* argv[])
{
copy(iarray, iarray + 10, intVector.begin());
cout << "Original:" << endl;
copy(intVector.begin(), intVector.end(), ostream_iterator<int>(cout, " "));
//reverse(intVector.begin(), intVector.end());
//cout << endl << "Reversed:" << endl;
//copy(intVector.begin(), intVector.end(), ostream_iterator<int>(cout, " "));
//cout << endl;
//int a[10];
//memcpy(a, (PVOID)intVector.begin()._Myptr, 10 * sizeof(int));
memcpy(a, &intVector[0], 10 * sizeof(int));
//for (int i = 0; i < 10; i++)
//{
// cout << a[i] << " ";
//}
//cout << endl;
random_shuffle(intVector.begin(), intVector.end());
cout << endl << "Shuffled:" << endl;
copy(intVector.begin(), intVector.end(), intVector1.begin());
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//对数组的前 4 个进行排序
sort(intVector1.begin(), intVector1.begin() + 4, greater<int>()); //greater<int>() 为倒序排列
cout << endl << "Sorted:" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//与 sort() 基本相同,但如果两个元素比较结果为等价,stable_sort()不改变它们的相对顺序。
copy(intVector.begin(), intVector.end(), intVector1.begin());
stable_sort(intVector1.begin(), intVector1.begin() + 4, greater<int>());
cout << endl << "Stable Sorted:" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//排出最小的 4 个
copy(intVector.begin(), intVector.end(), intVector1.begin());
partial_sort(intVector1.begin(), intVector1.begin() + 4, intVector1.end()/*, greater<int>()*/); //greater<int>() 为最大的 4 个
cout << endl << "Partial Sorted:" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//做成堆
copy(intVector.begin(), intVector.end(), intVector1.begin());
make_heap(intVector1.begin(), intVector1.end()/*, greater<int>()*/);
cout << endl << "Heap Made:" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//将堆里面的最大数移动到堆的 end(),并对[begin(), end())进行堆排序
pop_heap(intVector1.begin(), intVector1.end()/*, greater<int>()*/); //greater<int>() 取最小数
cout << endl << "Heap Poped(" << intVector1.back() << " Poped):" << endl;
intVector1.pop_back(); //移除 end(),保留已排序的堆
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//对已插入到 end() 的堆进行重新排序
srand(::GetTickCount());
int iRnd = rand() % 10;
intVector1.push_back(iRnd); //插入一个随机数
push_heap(intVector1.begin(), intVector1.end()/*, greater<int>()*/); //重新排序
cout << endl << "Heap Pushed(" << iRnd << " Pushed):" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
//已排序的堆排成顺序数组
sort_heap(intVector1.begin(), intVector1.end()/*, greater<int>()*/);
cout << endl << "Heap Sorted:" << endl;
copy(intVector1.begin(), intVector1.end(), ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
[STL]一些STL的学习笔记(持续更新)
最新推荐文章于 2024-09-24 21:14:07 发布