C++之STL整理(1)之STL、vector、map、set数据结构初识

C++之STL整理(1)之STL、vector、map、set数据结构初识

注:整理一些突然学到的C++知识,随时mark一下
例如:忘记的关键字用法,新关键字,新数据结构



提示:本文为 C++ 中 vector、map、set的写法和举例


一、STL概要,初识STL

  STL,即Standard Template Library,标准模板库,是C++标准库的一个重要组成部分。它是一个可复用的封装好的组件库,同时也是一个包罗数据结构与算法的软件框架。STL为C++程序员们提供了一个可扩展的应用框架,高度体现了软件的封装性与可复用性。

STL包含了诸多在计算机科学领域里所常用的数据结构基本算法,提供了许多通用的模板类和函数,用于实现常用的数据结构和算法。STL的一个重要特点是数据结构和算法的分离,它允许程序员编写通用的代码,即可适用于不同的数据类型,而不必为每种类型编写不同的代码。

STL的六大组件包括容器(Containers)、迭代器(Iterators)、算法(Algorithms)、仿函数(Functors)、适配器(Adapters)和空间配置器(Allocators)

其中,
容器负责存储和管理数据,每种容器相当于定义好的一个反映数据结构的类(模板类):如字符串(string)、向量(vector)、列表(list)、双端队列(deque)、栈(stack)、队列(queue)、优先队列(priority_queue)、集合(set)、映射(map)等。
迭代器则用于遍历容器中的元素。
算法是对容器中的数据进行操作的函数,分为质变算法和非质变算法
仿函数和行为类似于函数的对象,可以作为算法的参数以定制算法的行为。
适配器用于修改容器或迭代器的接口以提供不同的功能。
空间配置器则负责内存的分配和释放。

1、STL之容器

容器:存储数据的数据结构类,如vector、deque、list等,C++的string数据结构也是一个封装好的容器。

算法:对容器中的数据进行操作的函数模板,如排序、查找等。

迭代器:提供一种方法来访问容器中的元素。

仿函数:行为类似函数的对象,可以作为算法的参数来定制算法的行为。

适配器:用于修改容器或迭代器的接口,以提供不同的功能。

空间配置器:负责内存分配和释放的组件,通常不需要直接操作。

(1)序列式容器

序列式容器中的元素按照插入顺序进行存储

Vector容器:又叫动态数组,支持随机访问。

#include <vector>  
#include <iostream>  
  
int main() {
     
    std::vector<int> vec = {
   1, 2, 3, 4, 5};  
    for (const auto& element : vec) {
     
        std::cout << element << " ";  
    }  
    return 0;  
}

Deque容器:双端队列,支持在头部和尾部进行插入和删除操作。

#include <deque>  
#include <iostream>  
  
int main() {
     
    std::deque<int> deq = {
   1, 2, 3, 4, 5};  
    deq.push_front(0); // 在头部插入元素  
    deq.push_back(6); // 在尾部插入元素  
    for (const auto& element : deq) {
     
        std::cout << element << " ";  
    }  
    return 0;  
}

List容器:双向链表,支持在任意位置进行插入和删除操作。

#include <list>  
#include <iostream>  
  
int main() {
     
    std::list<int> lst = {
   1, 2, 3, 4, 5};  
    lst.push_front(0); // 在头部插入元素  
    lst.push_back(6); // 在尾部插入元素  
    for (const 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值