C++:STL教程从入门到精通

1:STL概念

C++ STL(标准模板库)是一套功能强大的 C++ 模板类,它提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,(如:向量,链表,队列,栈。)

1.1 容器:

用来管理某一类对象的集合,C++提供了各种不同类型的容器。比如:Dequeue,List, Vector等集合容易。

vector<T> : 一种向量

list<T> : 一个双向链表容器,完成了标准C++数据结构链表的所有功能

queue<T> : 一种队列容器,完成了标准C++数据结构中 队列的所有功能

stack<T>: 一种栈容器,完成了标准C++数据结构中栈的所有功能

deque <T>:双端队列容器,完成了标准 C++ 数据结构中栈的所有功能

priority_queue <T>:一种按值排序的队列容器

set <T>:一种集合容器

multiset <T>:一种允许出现重复元素的集合容器

map <key, val>:一种关联数组容器

multimap <key, val>:一种允许出现重复 key 值的关联数组容器

1.1.1 :容器 Stack例子

 #include <iostream>
#include <string>
#include <cstring>
#include <thread>
#include<windows.h>
#include<chrono>
#include<ctime>
#include<mutex>
#include<stack>      

int main() {

       stack<int> stack; // 定义堆栈对象
       for (int i = 0; i < 10; i++)
       {
           stack.push(i);
       }
       cout << "开始弹出堆栈的元素";
       while (!stack.empty())
       {
           cout << stack.top()<< " ";
           stack.pop();
       }

}

打印结国: 开始弹出堆栈的元素9 8 7 6 5 4 3 2 1 0
       

1.1.2 :Stack实际应用 :

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格  比如: good good study day day up ---->pu yad yad yduts doog doog 

1: 可以使用C++ 头文件  algorithm的 reverse函数

 2: 也可以切割字符串,通过 stack 来实现


实现方式一: 

int main() {

      reverse(str.begin(), str.end());
      string reverse_str = str;
     cout << "反转的字符串为: " << reverse_str << endl;
}



实现方式二:

int main() {

       stack<char> str_stack;
       for (int i = 0; i < str.length(); i++)
       {
           str_stack.push(str[i]);
       }

       while (str_stack.size() >0)
       {
           cout << str_stack.top() << "";
           str_stack.pop();
       }

}


打印结果:反转的字符串为:pu yad yad yduts doog doog
   

1.1.3  :C++ STL stack容器源码解析 

1.2 :案列代码

1.2 算法:

算法作用于容器,他们提供了执行各种操作的方式,包括对容器内容执行初始化,排序,搜索和转换等操作,这些算法在命名空间 std 的范围内定义,通过包含头文件 <algorithm> 来获得使用权

常见的算法包括

  • for_each();
  • find();
  • find_if();
  • count();
  • count_if();
  • replace();
  • replace_if();
  • copy();
  • unique_copy();
  • sort();
  • equal_range();
  • merge();

1.3 迭代器:

迭代器作用于遍历对象集合的元素,这些集合可能时容器,也可能是容器的子集。

2:STL

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值