[STL]一些STL的学习笔记(持续更新)

 
#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值