模板小细节与了解STL

1、模板小细节

1、在C++中,已经写好了有关swap函数来供我们使用:

2、编译器也会偷懒,除非我们给强制要求:

通过调试我们可以看到,编译器不会主动去找模板,这时候我们要在add后加<>即可让Add使用模板函数:

要分清楚类名和类型的差别:

类名:vector

类型:vector<T>

在类中用了 模板后,在函数外声明调用时,也要跟<>

vetor<T>::~vetctor(){};

2、了解STL

1、什么是STL

是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。

2、STL的版本

原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使 用。 HP 版本--所有STL实现版本的始祖。

P. J. 版本 由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低, 符号命名比较怪异。

RW版本 由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。

SGI版本 由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好, 可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码, 主要参考的就是这个版本。

3. STL的六大组件

由于刚刚接触,我们先来讲最常用的:

容器和算法,容器就是数据结构。

4、如何学习STL

一、熟练运用STL

二、了解其底层原理,内部逻辑

三、扩展

根据不同需求来写合适与自己使用的类STL标准的代码。

相关推荐
RFCEO14 小时前
JavaScript基础课程十四、原型与原型链(JS 核心底层)
开发语言·原型模式·prototype原型详解·javascript基础课·构造函数原型方法定义与使用·js原型链继承机制入门·t原型链顶层null原理
liuyao_xianhui14 小时前
优选算法_位运算_只出现一次的数字3_C++
开发语言·数据结构·c++·算法·leetcode·链表·动态规划
十五年专注C++开发14 小时前
Linux 下用 VS Code 高效调试
linux·运维·服务器·c++·vscode
Sylvia33.14 小时前
体育数据API实战:用火星数据实现NBA赛事实时比分与状态同步
java·linux·开发语言·前端·python
郝学胜-神的一滴14 小时前
贪心策略实战Leetcode 860题:柠檬水找零问题的优雅解法
数据结构·c++·算法·leetcode·职场和发展
遗憾随她而去.14 小时前
js 插件 Clipboard.js 与原生 Clipboard API 全方位对比
开发语言·前端·javascript
人道领域14 小时前
Day | 07 【苍穹外卖 :用户端添加购物车】
java·开发语言·数据库·后端·苍穹外卖
@我漫长的孤独流浪14 小时前
Python爬虫实战:从入门到精通
开发语言·爬虫·python
weixin_4563216414 小时前
Java架构设计:Redis RDB持久化深度解析(原理+实战+避坑)
java·开发语言·redis
茉莉玫瑰花茶14 小时前
CMake 工程指南 - 工程场景(4)
服务器·c++·cmake