STL標準模板庫歸納總結

一、STL標準模板庫的組成

STL包括:

容器(containers)、迭代器(iterator)、算法(algorithm)、函數對象、函數適配器


二、容器

1、分類

順序容器:

1、vector ->向量數組 

2、deque-> 隊列

3、list 鏈表

關聯容器:

4、map ->二叉樹  //4、5鍵值必須不同

5、set ->集合

6、multiset            //6、7允許有多個一樣的鍵值

7、multimap


2、vector容器

優缺點:一個可擴展的數組,隨機訪問,末尾快。

vector<int>s1,s2;

s1.begin()   //容器的第一個元素的位置

s1.end() //容器的最後一個元素後面的位置

S1.Clear() //清空容器

S1.empty() //檢查容器是否爲空

S1.Size() //獲得容器的大小

S1.swap(s2) //交換s1和s2容器中的內容


3、deque容器

優缺點:可兩端插入元素,兩端快,中間墁。


4、list容器

優缺點:在任意位置插入和刪除都很快,不支持隨機訪問


三、迭代器

1、指針是迭代器中的一種。迭代器是泛化的指針。

2、迭代器分爲輸入迭代器(只讀、istream_iterator)、輸出迭代器(只寫、ostream_iterator)、前向迭代器(輸入+輸出、線性、單向遍歷)、雙向迭代器、隨機訪問迭代器(deque、vector)


兩個迭代器表示一個區間:[p1,p2)

輸入迭代器:




輸出迭代器:

ostream_iterator<int>(cout, " 分隔符")


#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

double square(double x)
{
	return x*x;
}
int main()
{
	transform(istream_iterator<double>(cin), istream_iterator<double>(), ostream_iterator<double>(cout, " "), square);
	cout << endl;
	
	system("pause");
	return 0;
}


一個簡單的代碼:

#include <stdlib.h>
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;


template<class T>
class square
{
public:
	T operator()(T &t)                       //重載()實現特殊作用
	{
		return t*t;
	}
};
int main()
{
	const int N = 5;
	vector<int> s(N);
	for (int i = 0; i < N; i++)
	{
		cin >> s[i];
	}
	transform(s.begin(), s.end(), ostream_iterator<int>(cout, " "), negate<int>());   //negate 屬於算法取反
	cout << endl;
	
	system("pause");
	return 0;
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章