首页 > 编程语言 >c++基础篇之C++ STL 教程

c++基础篇之C++ STL 教程

时间:2023-01-18 19:03:40浏览次数:61  
标签:容器 STL c++ vector 模板 vec 向量 C++

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,c++,vector,模板,vec,向量,C++
From: https://blog.51cto.com/u_15721717/6019420

相关文章

  • c++基础篇之C++ 存储类
    C++存储类存储类定义C++程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出C++程序中可用的存储类:autoregisterstaticexternmut......
  • c++基础篇之C++ 字符串
    C++字符串C++提供了以下两种类型的字符串表示形式:C风格字符串C++引入的string类类型​​C风格字符串​​C风格的字符串起源于C语言,并在C++中继续得到支持。字符......
  • c++基础篇之C++ 模板
    C++模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都......
  • C++ 中标准库类型 string
    标准库类型string表示可变的字符序列,使用string类型必须首先包含string头文件。string本质上是一个类,是STL提供的char*的容器。定义初始化string对象初......
  • VS2019 C++ 调用python函数/类对象的方法
    1.环境配置VS工程配置要和python一致,安装的python如果是64位的,工程配置也要选成64位的在工程配置中添加包含目录和库目录,添加python环境目录里的include和libs文件......
  • c++生成csv文件并在python界面可视化
    前景概要为什么生成的是csv文件而不是txt文件因为txt在python那边处理起来比较麻烦需要两组数而数与数之间存在对应关系这样两组数同样需要两组就是两组xy数值然后......
  • 【C++】【Ctrl+CV即可食用】三维点拟合空间直线
    前景概述网上三维点拟合空间直线的代码很多大多数都是python或者matlab这里贴一个C++的代码原目的是拟合出直线之后任取两个点手动计算一下斜率数学原理最小二乘拟合......
  • C++调用python方法及环境配置(Windows环境、VS工具)
    c++和python使用混合编程,有四种方式来实现:(1)C++调用python(2)直接调用python文件并执行(3)3.使用Cpython:这是一个第三方库,可以将python代码直接变成c代码(4)使用pybind11库(建......
  • C++手写一个PL/0编译器
    一PL/01.1简介​ PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。其编译过程采......
  • 从linux c++转入win c++开发配置环境的记录:powershell自动补全,msvc环境的导入
    Terminal&autocomplete先前从事LinuxC++开发期间,个人PC端学习先后使用过FluentTerminal和WindowsTerminal搭配ssh+vscode,两者自带的毛玻璃特效视觉效果都很不......