现在的位置: 首页 > 综合 > 正文

STL学习之一

2013年10月25日 ⁄ 综合 ⁄ 共 3082字 ⁄ 字号 评论关闭
\\ Vector
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class point{
public:
	int x;
	int y;
	void print(){ cout << x << " " << y << endl;}
};

int main()
{
	vector<point> vp;
	point pt;
	for(int i = 1; i < 20; ++i){
		pt.x = i;
		pt.y = i*i;

		vp.push_back(pt);
	}

	cout << "\nInitialized vector:\n";
	for(unsigned int i = 0; i < vp.size(); ++i){
		vp[i].print();
	}

	//std::vector<point>::const_iterator pos;
	for(unsigned int pos = 0; pos < vp.size(); ){
		if( vp[pos].x  < 5){
			vp.erase(vp.begin() + pos);
		}else{
			++pos;
		}

	}

	cout << "\nChanged vector:\n";
	for(unsigned int i = 0; i < vp.size(); ++i){
		vp[i].print();
	}

	return 0;
}

\\ deque

#include <iostream>
#include <deque>

using namespace std;

int main()
{
	deque<float> cool_front, cool_back;

	for(unsigned int i = 0; i < 10; ++i){
		cool_front.push_front(i*1.2);
		cool_back.push_back(i*1.2);

	}

	cout << "deque push front array:\n\t";
	for(unsigned int i = 0; i < cool_front.size(); ++i){
		cout << cool_front.at(i) << " ";
	}

	cout << endl;
	
	cout << "deque push back array\n\t";
	for(unsigned int i = 0; i < cool_back.size(); ++i){
		cout << cool_back.at(i) << " ";
	}

	cout << endl;

	return 0;
}

\\ List

#include <list>
#include <iostream>

using namespace std;

int main()
{
	list<char> cool;

	for(char c = 'a'; c <= 'z'; ++c){
		cool.push_back(c);
	}

	while(!cool.empty()){
		cout << cool.front() << " ";
		cool.pop_front();
	}
	cout << endl;

	return 0;
}

\\ for_each

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class point{
public:
	int x;
	int y;
	//void print(){ cout << x << " " << y << endl;}
};

void print(point& pt){
	cout << pt.x << " " << pt.y << endl;
}

void square(point& pt){
	pt.x = pt.x * pt.x;
	pt.y = pt.y * pt.y - pt.x;
}

int main()
{
	vector<point> vp;
	point pt;
	for(int i = 1; i < 20; ++i){
		pt.x = i;
		pt.y = i*i;

		vp.push_back(pt);
	}

	cout << "\nInitialized vector:\n";
	//for(unsigned int i = 0; i < vp.size(); ++i){
	//	vp[i].print();
	//}
	for_each(vp.begin(),vp.end(), print);

	for_each(vp.begin(), vp.end(), square);

	cout << "\nSquared Vector : \n";
	for_each(vp.begin(), vp.end(), print);


	//std::vector<point>::const_iterator pos;
	for(unsigned int pos = 0; pos < vp.size(); ){
		if( vp[pos].x  < 5){
			vp.erase(vp.begin() + pos);
		}else{
			++pos;
		}

	}

	cout << "\nChanged vector:\n";
	for_each(vp.begin(), vp.end(), print);
	//for(unsigned int i = 0; i < vp.size(); ++i){
	//	vp[i].print();
	//}

	return 0;
}

\\ sort

#include <iostream>

using namespace std;


int partition(int a[], int from, int to)
{
	if(from == to){return from;}
	int med = from;
	int start = from;
	int end = to;

	while(start < end)
	{
		while(start < end && a[start] <= a[med]){	++start;}
		while(start < end && a[end] > a[med]){--end;}
		if(start < end){
			swap(a[start], a[end]);
		}
	}
	swap(a[med], a[start -1]);
	return start;
}

void quicksort(int dat[], int from, int to)
{
	for(int i = 0; i < 8; ++i)
	{
		cout << dat[i] << " ";
	}
	cout << endl;
	if(from >= to)
		return;
	int med = partition(dat, from, to);
	quicksort(dat, from, med -1);
	quicksort(dat, med+1, to);
	
}

void mergesort(int dat[], int from, int to)
{
	if(from >= to)
	{
		return;
	}
	if (to - from == 1)
	{
		if (dat[from] > dat[to])
		{
			swap(dat[from], dat[to]);
		}
	}
	else
	{
		int med = (from + to) / 2;
		mergesort(dat, from, med-1);
		mergesort(dat, med, to);

		int i = from, j = med;
		int tdx = 0;
		int *temp = new int[to - from + 1]; 
		while (i <= med -1 && j <= to)
		{
			if (dat[i] < dat[j])
			{
				temp[tdx] = dat[i];
				tdx++;
				i++;
			}
			else
			{
				temp[tdx] = dat[j];
				tdx++;
				j++;
			}
		}
		if (j > to)
		{
			while(i < med)
			{
				temp[tdx++] = dat[i++];
			}
		}


		for (int i = from; i <= to; ++i)
		{
			dat[i] = temp[i - from];
		}

		delete[] temp;
	}
}





int main()
{
	int dat[] = {5,8,4,7,3,2,9,0};
	//quicksort(dat, 0, 7);
	
	mergesort(dat, 0, 7);

	for (int i = 0; i <= 7; ++i)
	{
		cout << dat[i] << " ";
	}
	 cout << endl;
	return 0;
}

抱歉!评论已关闭.