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