首页 > 编程语言 >开心档之C++ STL 教程

开心档之C++ STL 教程

时间:2023-04-27 14:57:21浏览次数:48  
标签:容器 教程 STL value C++ 模板 向量 vec

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( ) 函数返回一个指向向量末尾的迭代器。

标签:容器,教程,STL,value,C++,模板,向量,vec
From: https://www.cnblogs.com/gddg/p/17358882.html

相关文章

  • 铁威马NAS教程之如何为NAS创建新用户
    铁威马NAS除了备份功能强大之外,它的优点还在于可以共享,方便我们办公和分享文件照片之类的。当我们拥有一台NAS之后,我们如何创建更多用户账号共同分享编辑呢?以铁威马为例,下面向大家分享如何创建用户:1、首先我们用管理员账号登录TOS系统2、打开<控制面板>,点开用户,点击右上角的创......
  • Cisco ISE 3.1部署教程
    网络拓扑图如下: Step1:ISE安装 选择"1"回车进入安装 ......
  • c++打卡第十七天
    一、问题描述二、设计思路①、对于每个小孩得所得到的糖果数我们可以定义一个数组存储它们。②、需要进行循环结构,同时循环停止的条件为10个小孩得糖果数相同。③、小孩所得得糖果为奇数时需要向老师要一块后才再次分一半给后一个小朋友,这时候我们需要选择结构来实现。④、我们......
  • C++ linux epoll并发服务器模型初探
    socket通讯流程图最简单的可以通讯的C++服务器端代码:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#defineSERV_PORT8000intmain(void){intlfd......
  • 用C++编写一个简单的发布者和订阅者
    摘要:节点(Node)是通过ROS图进行通信的可执行进程。本文分享自华为云社区《编写一个简单的发布者和订阅者》,作者:MAVER1CK。@[toc]参考官方文档:Writingasimplepublisherandsubscriber(C++)背景节点(Node)是通过ROS图进行通信的可执行进程。在本教程中,节点将通过话题(To......
  • MySQL 5.7版本安装教程-踩坑总结
    MySQL5.7版本安装教程-踩坑总结 下载MySQL下载地址选择下载64位(看自己电脑是32位还是64位)点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了。安装打开下载好的压缩包解压到你的某一目录下,这里我放到了D:\MySQL下如上图所示,在你解压的文件夹下是没有......
  • 基于C++的AI贪吃蛇
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]用C++做了个有AI功能的贪吃蛇小游戏,希望大家enjoyit.总体概况开发环境:VIsualStudio2017开发语言:C++和少许WindowsAPI运行环境:Windows1001初始化工作-游戏设置游戏设置和相关初始化放在了一个类里面,并进行了静态声明。主要设......
  • 【教程分享】一键部署MySQL,轻松搞定Docker安装和配置!
    1下载MySQL我们就可以到dockerhub来看:点击后的页面:直接执行dockerpullmysql,会下载最新版本的MySQL。点击tags,找到并下载经典的MySQL5.7:[root@service-monitoring~]#dockerpullmysql:5.7.42-oracle5.7.42-oracle:Pullingfromlibrary/mysqle83e8f2e82cc:Pull......
  • ACE Editor(代码编辑器) 入门教程
    ACEEditor(代码编辑器)入门教程作者:Albert.Wen 添加时间:2022-10-0500:34:16 修改时间:2023-04-2709:49:52 分类:HTML/CSS/JS 编辑ACEEditor是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScript应用程序中。ACE支持超过110种语言语......
  • 【C++】类与对象(上)
    系列文章之前的文章中讲解了,什么是类、类的实例化,以及封装的意义,若仍有不理解的部分可以移步上一篇文章  【C++】类与对象(引入)目录系列文章1.默认成员函数2.构造函数2.1定义2.2特性2.2.1重载构造函数2.2.2与缺省参数混合使用2.2.3默认构造函数3.析构函数3.1定义3.2特性4.拷贝构造......