STL概述

STL(Standard Template Library)是C++中的一个重要组件,旨在提供高效的数据结构和算法。它包括了容器(如数组、链表、队列、堆和树等)、迭代器(作为指针的抽象,连接容器和算法)和算法(如增删改查、排序等)。STL通过迭代器实现了容器和算法的解耦,提高了代码的复用性。此外,STL使用namespace std来避免命名冲突。学习和掌握STL能显著提升C++编程效率。
摘要由CSDN通过智能技术生成

STL诞生

  1. 长久以来,软件界一直希望建立一种可重复利用的东西
  2. C++面向对象和泛型编程思想,目的就是复用性的提升
  3. 大多数情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作
  4. 为了建立数据结构和算法的一套标准,在保证效率的前提下,将算法从诸多具体应用之中抽象出来,诞生了STL

STL内容

STL主要包含了容器、算法和迭代器三大部分。

名称内容理解实现方式
容器包含绝大数多数数据结构,如数组、链表、队列、堆、栈和树等。开发者可直接应用相关函数。是一种数据结构类模板
迭代器类似指针,通过它的有序移动把容器中的元素与算法关联起来,它是实现所有STL功能的基础所在初学,可先理解为指针封装了指针的类对象
算法包含了诸如增、删、改、查和排序等系统函数,开发者可以直接操作这些函数实现相应功能。函数模板

STL特点

STL中的迭代器即指针,可以是所需要的任意类型,它最大的好处是可以使容器和算法分离。

图示:

在这里插入图片描述

命名空间

概述

STL程序中一般需要加using namespace std;,这属于命名空间的应用,关键字是namespace

原理

在C++中,名称可以是变量、函数、结构、枚举以及类和结构的成员。随着工程的增大,名称互相冲突的可能性也将增加。使用多个厂商的类库时,可能导致名称冲突,故C++提出了namespace命名空间的解决方法,只要再加2一层封装就可以了。

举例

例如两个库可能都定义了名为func()的函数,但定义的方式不兼容,那么应用中如何应用某一个具体的func()函数呢?我们使用命名空间:

# include <stdio.h>
namespace mycompany{
	void func(){
		printf("Hello,this is my company");
	}
};
namespace yourcompany
{
	void func(){
		printf("Hello,this is your company");
	}
};
using namespace mycompany;
int main(int argc,char* argv[]){
	func();
	printf("\n");
	yourcompany::func();
	printf("\n");
	return 0;
}

在这里插入图片描述

由于STL的命名空间名称是std,因此要应用STL,必须要包含using namespace std;


参考书籍:《C++ STL基础及其应用(第2版)》

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值