C++——STL学习

本文介绍C++标准模板库(STL)中的容器概念及其操作方法,包括顺序容器vector的特点及使用技巧,如动态调整容量和删除指定元素等。通过示例代码讲解如何避免迭代过程中的常见错误。

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

引言

STL(Standard Template Library),即标准模板库,是C++标准函数库中的一部分,其在标准函数库占的比重将近80%,其涵盖了常用的数据结构和算法,灵活运用STL库可以明显降低开发强度。对于初学者,要尽快学会使用STL库,在灵活使用的基础上再进一步了解其底层实现,受益匪浅。
本文先说说STL中的容器以及容器的操作。

1. 顺序容器

1.1 vector

vector的内部实现是用动态数组实现的,使用allocator类实现内存管理(包含分配、释放、自动回收等),程序员不用关心内存管理的问题。vector由于重载了[]运算符,因此可以使用下标法访问元素。

1.2 vector操作函数

例如  vector<int>  v;
      v.push_back(1)  //将int型1添加到v中;
      v.capacity()     //获得v的容量,此时为1,
      v.push_back(2);
      v.capacity(); //为2,当在添加元素时,需要动态地重新分配容量,一般扩为原来的两倍,然后将原来的数据复制到新分配的内存中;
      v.push_back(3);
      v.push_back(4);
      v.push_back(5); //此时,v的容量是8
      v.reserver(100); //如果因为不停地重新分配内存而造成性能问题,则使用该函数设置容器的容量。
      v.erase(1); //删除v中第一次出现的元素1,并将被删除元素之后的内容前移

注意:区分capacity()和size(),此时v的容量是8,但是size()是vector实际存储元素的多少,此时v.size()为5。

1.3 易错操作

例如:

#include<iostream>
#include<vector>
using namespace std;
int main() {
    vector<int> array1;
    array1.push_back(1);
    array1.push_back(3);
    array1.push_back(3);
    array1.push_back(4);
    //删除array1里的所有3
    for(vector<int>::iterator it=array1.begin();it!=array1.end();++it){
        if(3==*it){
        array1.erase(it);
        --it;   //重点来了,如果没有这一步,一定会迭代漏掉某一项,所以要将迭代器后退一步
        }
    }
return 0;

}

2. 关联容器

3. 适配容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值