C++标准库---容器、迭代器、算法、仿函数

news/2024/6/3 17:57:36 标签: 迭代器, 算法, 容器

容器用来管理某类对象的集合,不同容器有不同的优缺点,所以正确使用不同的容器,可以获得容器带来的各种好处,但是如果使用不正确,就势必会造成很多麻烦,甚至造成错误。


迭代器用来对一个对象群集的所有元素进行遍历动作,所以迭代器容器的一个很小的接口,利用这个接口,就可以遍历容器内的元素,至于怎么做到遍历元素,应该取决于元素内部存储结构,而不同容器存储结构不同,所以每一种容器都提供了自己的迭代器,而这些迭代器了解该种容器的内部结构,所以能够知道如何正确的行进。


算法用来处理群集内的元素,它们可以处于不同的目的而搜寻、排序、修改、使用那些元素。算法是非容器的成员函数,而是一种搭配迭代器使用的全局函数,透过迭代器的协助,我们只需要写一次算法,就可以将它应用与任意容器之上,这是因为所有容器迭代器都提供一致的接口。所有算法都用来处理一个或多个区间内的元素,这样的区间可以是所有元素,也可以是元素的子集。迭代器用来提供给算法区间。


仿函数:传递给算法的“函数型参数”,并不一定是函数,可以是行为类似函数的对象,这样的对象就是仿函数。简单点就是,辅助算法处理问题的类似函数的对象,而不是一个具体的函数。


算法VS容器成员函数:容器本身可能提供功能相似而性能更佳的成员函数,那么算法就未必一定得用,尽管也满足使用算法的种种条件,因为如果高效率是你的目标,你应该永远优先使用容器自带的成员函数。


关联式容器和更易型算法更易型算法用在关联式容器会出现问题,因为如果更易型算法用于关联式容器,会改变某位置上的值,进而破坏其已序特性,推翻了关联式容器的基本准则。因此关联式容器的所有迭代器均被声明为指向常量。

那么如何删除关联式容器内的元素呢?

调用它们的成员函数!每一种关联式容器都提供了用来移除元素的成员函数。


http://www.niftyadmin.cn/n/1774281.html

相关文章

十一、装饰器

在用angular-cli脚手架工具创建项目的时候,经常能看到以下代码 Component({selector: "thingy",template: foo }) class MyComponent { } 复制代码装饰器是typescript中的一个特性,当然它也可能会被以后的es版本中纳入,但是在现行的…

C++标准库---仿函数

概念仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。有些功能的的代码,会在不同的成员函数中用到,想复用这些代码。1&#…

二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

要求:以左右孩子表示法实现链式方式存储的二叉树(lson—rson),以菜单方式设计并完成功能任务:建立并存储树、输出前序遍历结果、输出中序遍历结果、输出后序遍历结果、交换左右子树、统计高度,其中对于中序…

NLP领域的ImageNet时代:词嵌入已死,语言模型当立

选自the Gradient,作者:Sebastian Ruder,机器之心编译。计算机视觉领域常使用在 ImageNet 上预训练的模型,它们可以进一步用于目标检测、语义分割等不同的 CV 任务。而在自然语言处理领域中,我们通常只会使用预训练词嵌…

C++标准库---setmultiset

一些注意点&#xff1a; 1.set和multiset会根据特定的排序准则&#xff0c;自动将元素排序。两者不同之处在于multiset允许元素重复而set不允许。 2.排序准则默认缺省为less---为一个仿函数&#xff0c;以operator < 对元素进行比较&#xff0c;也可以定义为greater&#…

斐波那契函数

import matplotlib.pyplot as pltdef fib(n):if n 1 or n 2:return 1else:return fib(n-1) fib(n-2)for i in range(1, 6):print(fib(i))转载于:https://www.cnblogs.com/wbloger/p/9981236.html

Asp.net MVC Razor输出字符串方法(js中嵌入razor)

{ Model p new Model(); //输出名称和年龄 //1.第一种方式 :姓名p.Name //2.第二中方式 <text>年龄</text>p.Age } PS&#xff1a;:表示后面直接输出字符串 <text></text>表示里面输出的是字符串 两种方式可以任选一种&#xff0c;注意<text>不…

C++标准库---mapmultimap

使用map和multimap需要注意以下几点&#xff1a; 1.map和multimap将key/value&#xff08;键值/实值 对组&#xff09;当做元素&#xff0c;进行管理。它们可根据key的排序准则自动将元素元素排序。multimap允许重复元素&#xff0c;map不允许。 2.map的第一个参数被当做元素…