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

1:STL概念

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

1.1 容器:

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

vector : 一种向量

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

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

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

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

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

set :一种集合容器

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

map :一种关联数组容器

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

1.1.1 :容器 Stack例子

 #include 
#include 
#include 
#include 
#include
#include
#include
#include
#include      

int main() {

       stack 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 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 的范围内定义,通过包含头文件 来获得使用权

常见的算法包括

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

1.3 迭代器:

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

2:STL

你可能感兴趣的:(C++,C++)