C++ STL 教程

时间:2023年06月06日 阅读:416
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

C++ STL 教程

在前面的章节中,我们已经学习了 C++ 模板的概念。C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

C++ 标准模板库的核心包括以下三个组件:

组件描述
容器(Containers)容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(Algorithms)算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators)迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

这三个组件都带有丰富的预定义函数,帮助我们通过简单的方式处理复杂的任务。

下面的程序演示了向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:

#include <iostream>
#include <vector> 
using namespace std;   
int main() {    
    // 创建一个向量存储 int    
    vector<int> vec;     
    int i;     
    // 显示 vec 的原始大小    
    cout << "vector size = " << vec.size() << endl;     
    // 推入 5 个值到向量中    
    for(i = 0; i < 5; i++){       
        vec.push_back(i);    
    }     
    // 显示 vec 扩展后的大小    
    cout << "extended vector size = " << vec.size() << endl;     
    // 访问向量中的 5 个值    
    for(i = 0; i < 5; i++){       
        cout << "value of vec [" << i << "] = " << vec[i] << endl;    
    }     
    // 使用迭代器 iterator 访问值    
    vector<int>::iterator v = vec.begin();    
    while( v != vec.end()) {       
        cout << "value of v = " << *v << endl;       
        v++;   
    }     
    return 0; 
}


当上面的代码被编译和执行时,它会产生下列结果:

vector size = 0 
extended vector size = 5 
value of vec [0] = 0 
value of vec [1] = 1 
value of vec [2] = 2 
value of vec [3] = 3 
value of vec [4] = 4 
value of v = 0 
value of v = 1 
value of v = 2 
value of v = 3 
value of v = 4


关于上面实例中所使用的各种函数,有几点要注意:

  • push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。

  • size( ) 函数显示向量的大小。

  • begin( ) 函数返回一个指向向量开头的迭代器。

  • end( ) 函数返回一个指向向量末尾的迭代器。


打赏
标签: C++ C++ STL

本文地址:https://www.momojc.cn/cpp/c-stl-jiao4qx.html

下一篇:C++ 标准库

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.054 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计