C++中標準模板庫STL基本概念

0. 前言

C++語言的一大優勢就是便於軟件的重用,而重用體現在兩方面:

1. 面向對象思想:繼承和多態,標準類庫
2. 泛程序設計(Generic Programming)思想:模板機制,標準模板庫STL(Standard Template Library)。簡單來說就是使用模板的程序設計方法。

標準模板庫STL就是常用的數據結構算法的模板的集合,寫成模板之後,不管以後放什麼對象,就不用重新寫數據結構和算法了:

  1. 數據結構:比如鏈表、數組、二叉樹
  2. 算法:比如排序、查找

1.0 STL基本概念

主要包括三類:
1. 容器:可容納各種數據類型的通用數據結構
2. 迭代器:類似於指針,可用於存取容器中的元素
3. 算法:用來操作容器中的元素的函數模板

2.0 容器概述

容器是用於存放各種數據類型的通用數據結構,主要分爲三種,簡單畫了一個思維導圖如下:
在這裏插入圖片描述

3.0 練手的一個例子

這個例子主要是關於容器的創建,加入元素,通過迭代器訪問容器元素,並通過find()函數尋找某個元素,代碼如下:

#include "pch.h"
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	//**正向迭代器**//
	vector<int> v;
	v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);
	vector<int>::iterator p;	//創建迭代器p
	for (p = v.begin();p<v.end();p++)
		cout << *p << " ";
	cout << endl;

	//**反向迭代器**//
	vector<int>::reverse_iterator rp;
	for (rp = v.rbegin();rp < v.rend();rp++)		//rp++同樣也是反向加
		cout << *rp << " ";
	cout << endl;

	//**find()函數應用**//
	vector<int>::iterator fp;
	fp = find(v.begin(), v.end(), 3);	//三個參數,開始和結束迭代器,尋找的元素值
	if (fp != v.end())
		cout << *fp << " Found!" << endl;
	else
	{
		cout << "Not Found!" << endl;
	}

	fp = find(v.begin() + 1, v.end() - 2, 4);		//原容器[1 2 3 4],現在容器[2,3)不包含3
	if (fp != v.end())
		cout << *fp << endl;		//找不到,返回最後迭代器對應值,即3
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章