简述STL

本文介绍了C++ STL的基础知识,包括STL的六大组件之一的容器,详细讲解了vector和list两种容器。讨论了vector作为动态数组的特点,如扩容机制,并展示了基本使用和模拟实现Myvector的过程。对于list,文章强调了其在任意位置插入操作的优势,并同样给出了基本使用和模拟实现Mylist的介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、STL简介


STL(standard template linbrary) 标准模板库,是C++程序设计语言的标准程序库,是一个包罗算法与数据结构的软件框架。
使用了泛型编程的思想,对我们常用的数据结构:顺序表、链表、树、哈希以及常用的查找、排序等算法使用模板进行了封装,而且从运行效率以及内存使用上都基本达到了最优。

二、STL六大组件


这里写图片描述

1.容器


这里写图片描述

解释:对不同数据结构的封装
根据数据在容器中排序特性:关联性容器、序列式容器
序列式容器:按照其加入容器的先后次序,不一定有序
关联式容器:存放的是一个一个键值对,即KV模型,键值对实际上是结构体

1.1 vector


vector具体函数

vector(动态数组),一段连续的空间,当容器中的元素存放满时,扩容具体操作:动态开辟原空间大小两倍的空间,接着将原空间的元素拷贝到新空间中,释放原空间。

1.1.1 vector的基本使用

这里演示部分接口的使用

void Testvector1()
{
    vector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(3);
    v1.push_back(4);
    v1.push_back(5);
    vector<int>::iterator it1 = v1.begin();
    //while (it1 != v1.end())
    //{
   
   
    //  cout << *it1 << " ";
    //  ++it1;
    //}
    //cout << endl;
    while (it1 != v1.end())
    {
        if (*it1 % 2 == 0)
        {
            *it1 *= 2;

        }
        cout << *it1 << " ";
        ++it1;
    }
    cout << endl;
    cout << v1.size() << endl;
    cout << v1.capacity() << endl;
}

void Testvector2()
{
    vector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(3);
    v1.push_back(4);
    v1.push_back(5);


    //在末尾插入3个4
    //v1.insert(v1.end(), 3, 4);

    //删除区间内元素
    //v1.erase(v1.begin(), v1.begin() + 2);

    // assign()方法是给vector进行赋值
    // 在进行赋值之前,该方法会先将vector中原有的旧元素erase掉
    // 然后再将新元素插入进去
    // 给vector中5个值为10的元素
    //v1.assign(5, 10);

    ////清空元素
    //v1.clear();

    // resize(n,data):将
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值