C++语法篇之STL库[通俗易懂]

C++语法篇之STL库[通俗易懂]STL是StandardTemplateLibrary的缩写,即标准模板库。之前在写Templates模板的时候,提到过STL对于模板的应用。STL是由多个模板类构成,能够为开发者提供通用的数据结构和算法。STL主要包含以下内容:一个简单的vector示例:创建int类型的向量,并实现初始化、赋值和打印操作。输出结果:从上边的例子可以体现出vector的健壮性,vector是一个动态的数组模板,可以在程序运行过程中高效地添加或者删除元素,为程序设计提供了很大的灵活性。最后,关于STL还有很

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1. STL介绍

STL是Standard Template Library的缩写,即标准模板库。之前在写 Templates 模板的时候,提到过STL对于模板的应用。STL是由多个模板类构成,能够为开发者提供通用的数据结构和算法。

STL主要包含以下内容:

  • 容器 Container:用来管理某一类对象的集合。
    • vector(可扩展的单向数组)
    • deque(可扩展的双向数组)
    • list (双向列表)
    • sets(无序集合)
    • maps:<Key, Value>
  • 算法 Algorithm:对容器的内容执行初始化、排序、分类和搜索等操作。
  • 迭代器 Iterators:用于遍历对象集合的元素。

STL能给我们带来哪些帮助呢?

  • 减少开发时间。轮子已经被验证过了,学会使用轮子能大大节省开发时间。
  • 提高代码可读性。使用同一个轮子能让同行更快读懂你的代码。
  • 提高程序健壮性。STL的数据结构是自动增长的。
  • 提高可移植性,可维护性等。

2. vector 示例

一个简单的vector示例:创建int类型的向量,并实现初始化、赋值和打印操作。 

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    cout << "vector example:" << endl;
    
    // 创建一个int类型向量 x
    vector<int> x; 
    // 创建一个包含100个元素的int类型向量 y
    vector<int> y(100);
    
    // 输出vector x的初始大小
    cout << "vector x size = " << x.size() <<endl;
    // 输出vector y的初始大小
    cout << "vector y size = " << y.size() <<endl;
    
    // 为向量x的前10个元素赋值
    for (int a = 0; a < 10; a++)
        x.push_back(a); // 在vector最后插入元素
    
    // 输出vector y扩展后的大小
    cout << "vector x size = " << x.size() <<endl;

    vector<int>::iterator p; // 使用迭代器访问 x 的值 
    cout << "all elements in x: ";
    for (p = x.begin(); p < x.end(); p++)
        cout << *p << " "; //依次输出每一个元素的值
    cout << endl;
    
    // 删除vector中第4个元素
    vector<int>::iterator pp = (x.begin()+3);
    cout << "before erase ";
    cout << "vector x[4] = " << *pp << endl; 
    x.erase(pp);
    cout << "after  erase ";
    cout << "vector x[4] = " << *pp << endl; 
    return 0;
}

输出结果:

C++语法篇之STL库[通俗易懂]

 从上边的例子可以体现出vector的健壮性,vector是一个动态的数组模板,可以在程序运行过程中高效地添加或者删除元素,为程序设计提供了很大的灵活性。

最后,关于STL还有很多细节,待续吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183933.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • springboot 配置mybatis通用mapper

    springboot 配置mybatis通用mapper声明:此处为springboot配置mybatis的通用mapper方一共步其他多余操作不要有1添加mapper依赖一定要有以下依赖的jar包注意jar包版本,太高会导致功能不可用&lt;!–SpringBootMybatis依赖–&gt;&lt;dependency&gt;&lt;groupId&gt;org…

  • latex中双引号和单引号的正确应用[通俗易懂]

    latex中双引号和单引号的正确应用[通俗易懂]用输入法中的中文模式键入的双引号和单引号并不是LaTeX的正确输入方式。正确的输入方法如下:使用键盘的Tab键上侧的连续键入两个“然后输入键盘的双引号’’。单引号输入类似。示例如下:演示代码:\documentclass{article}\setlength\textwidth{150pt}\begin{document}\largePumasare“large,cat-likeanimals’’whichare`foundinAmerica’.Whenr

  • Java实现完美洗牌算法

    1问题描述有一个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后变成{a1,b1,a2,b2,a3,b3,…,an,bn},请考虑有没有时间复杂度为O(n)而空间复杂度为O(1)的解法。2解决方案2.1位置置换算法下面算法的时间复杂度为O(n),空间复杂度为O(n)。packagecom.liuzhen.practice;publiccl…

  • 给Ubuntu18.04(18.10)安装mac os主题

    给Ubuntu18.04(18.10)安装mac os主题2020-04-29Ubuntu20.04的Gnome版本与18.04有些许差别,完全按照本文效果并不好,20.04的美化博主正在连夜赶制中,尚未完成,敬请期待,如果实在等不及了,就看下面链接的

  • 小米手机解BL锁 刷开发版系统获取root权限「建议收藏」

    小米手机解BL锁 刷开发版系统获取root权限「建议收藏」小米手机想要获得root权限的话就要刷开发版的系统,这个是不叫简单省事的,获得root权限第一步,打开小米的这个网站http://www.miui.com/unlock/download.html按照上面的操作,解除BL锁。第二步从官网下载的解锁工具后打开如下图所示,手机进入兔子界面后,要先安装驱动,然后运行解锁程序第三步链接好手机和登录账号后直接点击解锁,解锁成功后如下图所示第四步前往http://www.miui.com/download.html小米官

  • 用js写简单选项卡

    用js写简单选项卡如图,最简单的纯粹的选项卡第一步,当然是先写html代码和css样式<!DOCTYPEhtml><html><head><metacharset=&quo

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号