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还有很多细节,待续吧。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • acwing-1170. 排队布局(差分约束)[通俗易懂]

    acwing-1170. 排队布局(差分约束)[通俗易懂]当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些。农夫约翰有 N 头奶牛,编号从 1 到 N,沿一条直线站着等候喂食。奶牛排在队伍中的顺序和它们的编号是相同的。因为奶牛相当苗条,所以可能有两头或者更多奶牛站在同一位置上。如果我们想象奶牛是站在一条数轴上的话,允许有两头或更多奶牛拥有相同的横坐标。一些奶牛相互间存有好感,它们希望两者之间的距离不超过一个给定的数 L。另一方面,一些奶牛相互间非常反感,它们希望两者间的距离不小于一个给定的数 D。给出 ML 条关于两头奶牛间有好感的描述,再给出 MD

    2022年8月9日
    9
  • vim常用设置—(.vimrc详细配置)[通俗易懂]

    vim常用设置—(.vimrc详细配置)[通俗易懂].vimrc配置文件内容如下:""""""""""""""""""""""""""""""""""""""""&

    2022年5月5日
    42
  • Java程序设计基础笔记 • 【第1章 初识Java】[通俗易懂]

    Java程序设计基础笔记 • 【第1章 初识Java】[通俗易懂]本章目录1.1程序的概念及Java语言介绍1.1.1生活中的程序1.1.2计算机程序1.1.3算法和流程图1.1.4实践练习1.2配置JDK环境1.2.1Java的发展1.2.2应用领域1.2.3Java的优势1.2.4JDK概述1.2.5配置开发环境1.2.6实践练习1.3Java程序编写基础1.3.1Java程…

    2022年6月22日
    25
  • god is a girl 是什么意思_god is a girl 歌词中文

    god is a girl 是什么意思_god is a girl 歌词中文godisagirl题意:解码。将题目中的样例做差输出,打表可得到112581321所以是按斐波那契额值解码的,一开始直接算的菲波那切数没有取模,这样的话90左右就会超longlong所以数组开了100,交了一发runtime,所以得把数组开大,就对斐波那契数取个模就好了#include&lt;bits/stdc++.h&gt;usingnamespacestd;in…

    2022年10月8日
    2
  • 十二、适配器模式——解决充电的烦恼 #和设计模式一起旅行#

    轻轻的我走了, 正如我轻轻的来; 我轻轻的招手, 作别西天的云彩。 ——徐志摩 《再别康桥》故事背景把奶茶店盘了出去,我和设计模式MM,继续上路,坐着冒着烟的飞机来到了剑桥,这里真是个美丽的地方,我用手机拍了很多的照片手机没电了,也玩的累了。找了个酒店 ,准备休息一下,然后给我的手机充充电。 才知道英国的插座都是下面这个样子:而我的…

    2022年2月27日
    46
  • Fluter 学习笔记 之 Dart 语言入门

    Fluter 学习笔记 之 Dart 语言入门基本类型var可以定义变量,如vartag=”666″,这和JS、Kotlin等语言类似,同时Dart属于动态类型语言,支持闭包。Dart中number类型分为int和double,其中java中的long对应的也是Dart中的int类型。Dart中没有float类型。Dart下只有bool型可以用于if等判断,不…

    2025年5月26日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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