零基础学C++之高级篇二

本文介绍了C++的STL标准模板库,包括序列容器(向量、双端队列、链表)、关联式容器(set、multiset、map、multimap)以及算法和迭代器的基本概念和使用方法。
摘要由CSDN通过智能技术生成

零基础学C++之高级篇二

STL标准模板库

STL(Standard Template Library)是为了标准化组件提供类模板进行范型编程,STL技术是对原有C++技术的一种补充,具有通用性好、效率高、数据结构简单、安全机制完善等特点。

序列容器

向量类模板

向量vector是一种随机访问的数组类型,提供了对数组元素的快速、随机访问,以及在序列尾部快速、随机插入和删除操作,它是大小可变的向量,在需要时可以改变大小。
使用向量类模板需要创建vector对象,创建vector对象有以下几种方法:

std::vector name; //空对象
std::vector name(size); //具有size元素个数的对象
std::vector name(size,value); //具有size元素个数的对象,并将元素初值设置为value
std::vector name(myvector); //用现有的myvector创建一个对象,复制
std::vector name(first,last); //创建在指定范围内的向量

vector对象的主要成员函数

函数 说明
assign(first,last) 用迭代器first和last所管辖范围内的元素替换向量元素
assign(num,value) 用value的num个副本替换向量元素
at(n) 返回向量中第n个位置元素的值
back() 返回对向量末尾元素的引用
begin() 返回指向向量中第一个元素的迭代器
capcity() 返回当前向量最多可以容纳的元素个数
clear() 删除向量中所有元素
empty() 如果向量为空,返回true
end() 返回指向向量中最后一个元素的迭代器
erase(start,end) 删除迭代器start和end所管辖范围内的向量元素
erase(i) 删除迭代器i所指向的向量元素
front() 返回对向量起始元素的引用
insert(i,x) 把值插入向量中由迭代器i所指明的位置
insert(i,start,end) 把迭代器start和end所管辖范围内的元素插入到向量中由迭代器i指明的位置
insert(i,n,x) 把x的n个副本插入到向量中由迭代器i指明的位置
max_size() 返回向量的最大容量
pop_back() 弹出向量最后一个元素
push_back(x) 把值x放在向量末尾
rebegin() 返回一个反向迭代器,指向向量末尾元素之后
rend() 返回一个反向迭代器,指向向量起始元素
reverse() 颠倒元素的顺序
resize(n,x) 重新设置向量大小,新元素的初始值为x
size() 返回向量的大小,元素的个数
swap(vector) 交换两个向量的内容
双端队列类模板

双端队列deque是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能,它可以在需要的时候修改其自身的大小,主要完成标准c++数据结构中队列的功能。
其创建方法与创建序列类模板对象方法一致,成员函数大部分与序列类模板一致,不同的如下:

函数 说明
pop_front() 弹出双端队列第一个元素
push_front(x) 把值x放在双端队列开始
链表类模板

链表list即双向链表容器,它不支持随机访问,访问链表元素要指针从链表的某个端点开始,插入和删除操作所花费的时间是固定的,和该元素在链表中的位置无关。list在任何位置插入和删除都很快。
创建链表对象的方法与创建vector对象方法一致,其主要成员函数大部分与vector一致,不同的如下:

函数 说明
pop_front() 弹出链表第一个元素
push_front(x) 把值x放在链表开始

关联式容器

关联式容器是STL提供的容器的一种,其中的元素都是经过排序的,它主要通过关键字的方式来提高查询的效率,关联容器包括set、mutliset、map、mutlimap和hash table。

set类模板

set类

  数字图像处理技术与理论是计算机应用的一个重要领域,许多工程应用都涉及到图像处理,一直有一个强烈的愿望,想系统的写一个关于数字图像处理的讲座,由于工作习很忙,时至今日才得以实现。   “图”是物体透射光或反射光的分布,“像”是人的视觉系统对图的接收在大脑中形成的印象或认识。图像是两者的结合。人类获取外界信息是靠听觉、视觉、触觉、嗅觉、味觉等,但绝大部分(约80%左右)来自视觉所接收的图像信息。图像处理就是对图像信息进行加工处理,以满足人的视觉心理和实际应用的需要。简单的说,依靠计算机对图像进行各种目的的处理我们就称之为数字图像处理。早期的数字图像处理的目的是以人为对象,为了满足人的视觉效果而改善图像的质量,处理过程中输入的是质量差的图像,输出的是质量好的图像,常用的图像处理方法有图像增强、复原等。随着计算机技术的发展,有一类图像处理是以机器为对象,处理的目的是使机器能够自动识别目标,这称之为图像的识别,因为这其中要牵涉到一些复杂的模式识别的理论,所以我们后续的讲座只讨论其中最基本的内容。由于在许多实际应用的编程中往往都要涉及到数字图像处理,涉及到其中的一些算法,这也是许多编程爱好者感兴趣的一个内容,我们这个讲座就是讨论如何利用微软的Visual C++开发工具来实现一些常用的数字图像处理算法,论述了图像处理的理论,同时给出了VC实现的源代码。本讲座主要的内容分为基础、中级高级,具体包含的主要内容有:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值