剖析C++ STL:标准模板类库

103 篇文章 7 订阅
64 篇文章 18 订阅

首先我们来了解一下什么是STL

STL 将“在数据上执行的操作”与“要执行操作的数据分开”,分别以如下概念指代:

  • 容器:包含、放置数据的地方。

  • 迭代器:在容器中指出一个位置、或成对使用以划定一个区域,用来限定操作所涉及到的数据范围。

  • 算法:要执行的操作。

标准模板库包含了序列容器(sequence containers)与关系容器(associative containers)。

序列容器包括vector,list,forward_list,deque和array等。

关联容器包括set,multiset,map,multimap,unordered_set,bitset和valarray等。

迭代器

迭代器是泛化的指针,通过使用迭代器,开发者可以操作数据结构而无需关心其内部实现。根据迭代器的操作方式的不同,迭代器分为五种:

  • 输入迭代器

  • 输出迭代器

  • 前向迭代器

  • 双向迭代器

  • 随机访问迭代器

算法

STL提供了一些常见 的算法,如排序和搜索等。这些算法与数据结构的实现进行了分离。因此,用于也可对自定义的数据结构使用这些算法,只需让这些自定义的数据结构拥有算法所预期的迭代器。

函数对象

狭义的函数对象即重载了操作符()的类的实例,而广义来讲所有可用 x(...) 形式调用的 x 都可称为函数对象、或曰可调用对象。

适配器

适配器(Adaptor)为一个模板类,用于提供接口映射。

 

 

 

这是自己写的第一个list

#include <iostream>
//STL 封装
#include "myList.h"
#include <string>
using namespace std;
int main()
{
    list<string> mylist;        //实例化过程,创建一个模板类的对象
    //链表的插入
    mylist.push_back("酥");
    mylist.push_back("是");
    mylist.push_back("男孩");
    mylist.push_front("丑");
    //迭代器
    list<string>::iterator myIter;
    //mylist.begin()返回的是一个singleList<T>* 指针
    for (myIter = mylist.begin(); myIter != mylist.end(); myIter++)
    {
        cout << *myIter; //成功打印,返回数据才是根本
    }
    //mylist.printList();
    cout << endl;
    system("pause");        //防止闪屏
    return 0;
}

感觉还不错,有兴趣的可以自己去尝试的运行

UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~ 

  加群1083227756!!!

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值