C++中Standard Template Library(STL)入门简要概况

STL在C++中算是相当简洁方便的东西了,但不知为何网上的教程都非常难,给新手入门造成了非常多的困扰。在此写篇新手入门教程。阅读此文需要有一定的C/C++基础,比如你要会用C语言的数组、链表等,会用C++类并且有一定了解等等,不会的还是别看了,就算你会用STL你也会发现有各种各样的bug。

本篇只介绍STL最基础的部分,其他的调用方式等等都差不多了。本篇不会讲解太多,具体需要自己去研究进入正题

(1) vector

很神奇的一个词汇,翻译成汉语是“向量”,其实,这就是一个C++类,用于实现边长数组的功能。特性:一个vector只能存储一种数据类型,不能像VB那样屌。

#include <vector>
using namespace std;

使用vector前需要在代码前面加上上面两句,用于引入vector库。

然后定义一个可以存储int类型数据的边长数组

vector<int> v;

定义完毕之后,向数组中插入数据

v.resize(3);
v[0] = 1;
v[1] = 4;
v[2] = 3;

分配三个存储空间,然后对其进行赋值。上面体现了一个数组的特性,但还没体现动态数组吧。下面介绍数组的动态扩展。

v.push_back(2);

这句话的意思是再向数组末尾插入 2 这个数据。数组的长度为3,当长度不足时,vector将会自动扩展空间。

(2)遍历

for (std::vector<int>::iterator i = v.begin(); i != v.end(); i++) {
	cout << *i << endl;
}

上面代码就是遍历并打印数据了。可以看到打印结果为  1 4 3 2

std::vector<int>::iterator这句话有点长啊,其实意思就是 std::vector<int> (数组类型)的 iterator (索引器),专门用来索引这种数组用的。v.begin()为数组v的起始位置,也就是指向数组第一个元素 0 的指针。v.end() 为数组最后一个元素的后一位,为NULL的指针,i++表示索引器向下移动一位。

(3)简要概况

stl集合了边长数组、链表、队列、图、哈希表等等一大堆常用数据结构,且使用的最优算法。

避免低效事件,比如在数组开始地方或中间插入元素,这几乎将要移动整个数组。如果确实有需要,可以考虑使用双端队列。

[]索引为了效率不会有错误判断,如果有需要,使用at()索引。

STL还封装了常用算法,引入 #include <algorithm> 头文件,可以使用sort排序函数等函数,支持默认排序以及自定义排序

v.capacity()为占用空间大小,为避免过多内存切换,调用v.clear()并不会真正释放空间。只有在析构和swap时才会释放空间。

懂了以上知识后,深入掌握STL就容易了。

时间: 2024-08-05 16:46:45

C++中Standard Template Library(STL)入门简要概况的相关文章

C++ Standard Template Library STL(undone)

目录 1. C++标准模版库(Standard Template Library STL) 2. C++ STL容器 3. C++ STL 顺序性容器 4. C++ STL 关联式容器 5. C++ STL 容器适配器 6. C++ STL算法 7. C++ STL边界限制 1. C++标准模版库(STL) STL就是Standard Template Library,标准模板库.从根本上说 1. STL是一些"容器"集合 2. STL也是算法和其他一些组件的集合 3. 这里的&quo

C++标准模板库Stand Template Library(STL)简介与STL string类

参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进行过学习和总结,但并没有一个宏观上的把握,现在通过上一篇和这一篇博文,将对C++模板以及基于C++模板的STL关联起来,形成一个总体的把握,对于掌握C++中模板(template)这一强有力的工具会十分有帮助.本文的主要内容有: (1) STL容器: (2) STL迭代器: (3) STL算法: (4) ST

[c++] STL = Standard Template Library

How many people give up, because of YOU. Continue... 先实践,最后需要总结. 1. 数据流中的数据按照一定的格式<T>提取 -------> 放在vector中. 2. 注意 vector.begin(), vector.front()的区别. 3. accumulate()求sum.(与valarrary貌似有一拼,孰优孰劣?---- 可能后者效率更高) 4. multiplies<int>()   c++ -->

STL(Standard Template Library)

容器(Containers) list.deque.vector.map等  算法(Algorithms)  算法作用于容器,它们提供了执行各种操作的方式.包括了对容器的初始化.排序.搜索和转化等操作  迭代器(iterators)  用于遍历元素,这些集合可能是容器也可能是容器的子集 仿函数(Function object) 仿函数又称函数对象,其实就是重载了()的struct 迭代适配器(Adaptor)   空间配置器(Allocator) 作用:1.对象的创建于销毁 2.内存的获取与释放

&lt;Standard Template Library&gt;标准模板库专项复习总结(二)

4.队列 先进先出(FIFO)表 头文件:#include<queue> 变量的定义:queue<TYPE>queueName 成员函数: bool empty() 空队列返回true,否则返回false void pop() 删除队列的元素 void push(const TYPE&) 插入新元素 TYPE& size() 返回元素数目 TYPE& front() 返回第一个元素的数值 5.优先队列 在队列的基础上,免费给排顺序 头文件:#include&

【c++】标准模板库STL入门简介与常见用法

一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部分,使用STL开发系统可以提高开发效率. 2.容器(Containers) 容器类是可以包含其它对象的模板类,如向量类(vector).链表类(list).双向队列类(deque).集合类(set)和映射类(map)等.其中vector.list.deque为序列式容器,set.map为关联式容器.

[技术] OIer的STL入门教程

注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档. 原始资料源于各大C++参考信息网站/C++标准文档和Wikipedia. 1.概述 首先, 什么是STL? STL, 即标准模板库, 全称Standard Template Library , 主要包含4个组件, 即算法, 函数, 容器, 迭代器. 这里的函数似乎主要指函数式编程(FP)中的函数

C++手稿:STL入门

STL (Standard Template Library) 提供了一些常用的数据结构和算法的模板,1998年加入C++标准. STL中有三个基本概念: 容器:容纳各种数据类型的数据结构,是一系列的类模板. 迭代器:迭代器用来迭代地访问容器中的元素. 算法:用来操作容器中的元素,是一系列的函数模板. STL 容器 STL中的容器定义在std命名空间下,需要引入头文件 <vector>, <set>, <map>, <deque>, <list>

ArcGIS API for Silverlight代码中使用Template模板

原文:ArcGIS API for Silverlight代码中使用Template模板 在项目开发中,会遇到点选中聚焦闪烁效果,但是因为在使用Symbol的时候,会设置一定的OffSetX和OffSetY,所以聚焦闪烁的时候,有些情况下,会出现闪烁点的位置和Symbol的位置不重叠现象,下面的方法就是解决这个问题的. 1.在Silverlight项目中新建一个文件夹Template,新建一个DefaultMarkerSymbol.xaml的Silverlight资源字典文件,如下图: 2.打开