C++学习笔记(二)STL简介(一)

本文介绍了C++中的STL(标准模板库),包括其概念、组成,特别是迭代器、顺序容器(如vector、list、deque)和关联容器(如map、multimap、set、multiset)的详细讲解,以及容器适配器(stack、queue、priority_queue)的使用。STL提供了一种高效且通用的方式来处理数据,如通过迭代器进行元素访问,以及各种容器的特性与操作方法。
摘要由CSDN通过智能技术生成

STL(Standard Template Library)标准模板库

1.概念

标准模板库(英文:Standard Template Library,缩写:STL),是一个C++软件库,也是C++标准程序库的一部分。其中包含5个组件,分别为算法、容器、迭代器、函数、适配器。模板是C++程序设计语言中的一个重要特征,而标准模板库正是基于此特征。标准模板库使得C++编程语言在有了同Java一样强大的类库的同时,保有了更大的可扩展性。
—————-摘自“维基百科”


2.组成


3.迭代器(Iterator)

实际上迭代器是一种软件设计模式,STL通过迭代器模式提供了访问容器元素使用的泛型抽象。每个容器都提供了容器特定的迭代器,说的通俗些,迭代器就是增强版的智能指针我们不用理会容器提供的不同功能,访问容器元素的代码都可以使用迭代器呈现的统一接口。
a.声明一个特定容器迭代器:vector<int>:: iterator iter
b.声明一个特定容器的反向迭代器:vector<int>:: reverse_iterator riter
c.利用迭代器访问特定容器的元素:

vector<int> v;
vector<int>:: iterator iter;
for (iter = v.begin(); iter != v.end(); ++iter) {
    //遍历元素
}

4.顺序容器(Sequence)

template name Description header file
vector 1.由数组实现 < vector >
2.可以在尾部快速插入删除
3.可以随机访问容器中的元素(利用下标)
list 1.由双向链表实现 < list >
2.在任意位置可以快速插入删除
3.不可以随机访问容器中的元素
deque 1.由指针数组实现 < deque >
2.可以在两端快速插入删除
3.可以随机访问容器中的元素

A.vector:

1.vector可以理解为C风格的数组(元素保存在连续的内存空间中),可以通过重载的operator[]访问和修改这些元素(通过指定元素数目的构造函数),但通过operator[]访问vector边界之外的元素得到的结果是未定义的。

2.指定初始元素值:vector<double> doublevector(10, 0.0) // 10个元素全部初始化为0.0

3.访问vector元素的其他方法:通过at(), front(), back()访问

at()方法 等同于operator[]运算符,区别在于at[]会执行边界检查,如果索引超出边界,at()会抛出out_of_range异常

|front()方法|返回vector的第一个元素|
|back()方法|返回vector的最后一个元素|

4.用带initializer_list参数的构造函数,这个参数包含了vector中的初始元素:vector<int> intVector({1, 2, 3, 4, 5, 6})

5.vector的复制和赋值:vector类的复制构造函数和赋值运算符对vector中的所有元素执行深度复制

6.vector所有成员函数

成员函数 函数说明
Constructors 构造函数
Operators 对vector进行赋值或比较
assign() 对vector中的元素赋值
at() 返回指定位置的元素
back() 返回最后一个元素
begin() 返回第一个元素的迭代器
capacity() 返回vector所能容纳的元素的数量(在不重新分配内存的情况下)
clear() 清空所有元素
empty() 判断vector是否为空(若为空返回true)
end() 返回最末尾元素的迭代器
erase() 删除指定元素
front() 返回第一个元素
get_allocator() 返回vector的内存分配器
insert() 插入元素到vector中(返回值指向新插入元素的迭代器)
max_size() 返回Vector所能容纳元素的最大数量(上限)
pop_back() 移除最后一个元素
push_back() 在vector最后添加一个元素
rbegin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值