![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
容器
文章平均质量分 58
无边界ROS2
精通python、c语言、c++,研究ROS1、ROS2.
展开
-
map/multimap容器
Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。Multimap和map的操作类似,唯一区别multimap键值可重复。原创 2024-06-24 11:19:09 · 304 阅读 · 0 评论 -
set容器中排序自定义类型
我在程序使用C++中的set容器和自定义比较器实现对自定义类对象的排序和输出。通过重载mycom类的operator()函数,定义了自定义类对象的排序规则,按照年龄升序排序。然后在主函数中创建了三个num_1对象,将它们插入set容器中,并通过迭代器遍历输出了排序结果。这样可以实现对自定义类对象的按照特定规则排序。原创 2024-06-24 09:37:21 · 127 阅读 · 0 评论 -
list 容器的实际使用
list容器是一种有序集合,可以存储任意类型的元素,可以增删改查元素,支持索引操作和迭代遍历。在c++中,容器的作用大多有做数据库使用,我这里以list 容器的一个小例题为例:// 在C++ 中,使用list容器实现一个简单的待办事项列表。用户可以执行添加任务、删除任务和显示所有任务的操作。请编写一个程序,实现这些功能在编程过程中,我们应该要养成分模块化思想。原创 2024-06-23 18:34:47 · 455 阅读 · 0 评论 -
STL容器使用时机
map的使用场景:比如按ID号存储十万个用户,想要快速要通过ID查找对应的用户。的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述。的使用场景:比如公交车乘客的存储,随时可能有乘客下车,支持频繁的不确实位置元素的移除插入。的使用场景:比如对手机游戏的个人得分记录的存储,存储要求从高分到低分的顺序排列。的使用场景:比如排队购票系统,对排队者的存储可以采用。,则头端移除时,会移动大量的数据,速度慢。原创 2024-06-23 16:47:03 · 158 阅读 · 0 评论 -
set/multiset容器
set拥有和list某些相同的性质,当对容器中的元素进行插入操作或者删除操作的时候,操作之前所有的迭代器,在操作完成之后依然有效,被删除的那个元素的迭代器必然是一个例外。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。由于set容器是有序的,对于每个元素的插入都需要按照一定的规则来保持有序,因此需要使用set容器中的insert函数来插入元素,而不是push_back函数。这意味着set容器中的元素是按照某种顺序排列的,并且不能有重复的元素。原创 2024-06-23 15:48:53 · 1045 阅读 · 0 评论 -
list 容器
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相较于vector的连续线性空间,list就显得负责许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素的移除,list原创 2024-06-22 17:02:52 · 1008 阅读 · 0 评论 -
queue容器
这样的设计是为了提供额外的灵活性,让程序员能够查看即将被插入的元素的位置,即队尾元素。Queue所有元素的进出都必须符合”先进先出”的条件,只有queue的顶端元素,才有机会被外界取用。Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。在标准的 queue 接口中,你通常只能访问队首元素(front)或向队尾(back)添加新元素,而不能直接访问队尾元素。原创 2024-06-22 08:00:00 · 334 阅读 · 0 评论 -
stack 容器
stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。Stack不提供遍历功能,也不提供迭代器。有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.原创 2024-06-21 20:01:00 · 347 阅读 · 0 评论 -
deque容器
Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间(固定操作)对头端进行元素的插入和删除操作。原创 2024-06-21 19:31:57 · 468 阅读 · 0 评论 -
list容器中,完成列表的升序降序
使用C++的list容器,可以通过调用sort()函数来实现列表的升序排序和降序排序。sort()函数默认使用升序排序,若要实现降序排序,可以使用greater()函数作为参数。但如果类型为复杂的自定义类,则还需要自己进行 == 重载和回调函数等操作。使用list容器。放入5个人,属性有姓名、身高、体重。1、按体重的降序排列2、体重如果相同,按身高的降序排学生类里面有姓名、年龄、身高等属性。先声明好5个对象,后分别把三个对象放入list 容器。原创 2024-06-21 18:08:18 · 261 阅读 · 0 评论 -
pair对组
pair对组是指两个元素成对出现在一起的组合。这种组合常见于数据处理和算法设计中,用于处理成对的数据或执行成对的操作。原创 2024-06-21 16:10:20 · 364 阅读 · 0 评论 -
vector容器
因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必害怕空间不足而一开始就要求一个大块头的array了。Vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦vector旧空间满了,如果客户每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为所谓的扩充空间(不论多大),一如刚所说,是”配置新空间-数据移动-释放旧空间”的大工程,时间成本很高,应该加入某种未雨绸缪的考虑,稍后我们便可以看到vector的空间配置策略。原创 2024-06-20 17:21:52 · 870 阅读 · 0 评论 -
string 容器
在C++,char* 类型 可以隐式的转化为 string 类型,反之,string 类型不可以隐式转换为char* 类型,只能通过.c_str()来完成。C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。string封装了char*,管理这个字符串,是一个char*型的容器。原创 2024-06-20 15:25:52 · 477 阅读 · 0 评论 -
容器嵌套容器
这段代码的作用是创建一个二维vector容器v,其中嵌套了三个一维vector容器v1, v2, v3。然后利用嵌套的for循环遍历二维vector容器v的元素,并输出到屏幕上。容器嵌套容器是指在一个容器中再次嵌套另一个容器。这种嵌套可以实现多层次的数据结构,如列表中嵌套字典、字典中嵌套列表等,使用容器嵌套容器可以灵活存储和处理复杂的数据结构。原创 2024-06-20 10:39:01 · 352 阅读 · 0 评论 -
自定义类型在容器迭代器中使用
迭代器的使用:使用迭代器遍历vector中的元素,通过v.begin()获取vector的起始迭代器,v.end()获取vector的结束迭代器,然后使用循环和迭代器指针来访问vector中的元素。使用vector容器:通过#include 引入vector头文件,并声明一个vector类型的变量v来存储num_1类的对象。初始化类对象:在main函数中,创建了三个num_1类型的对象p1、p2和p3,并通过push_back函数将它们添加到vector中。原创 2024-06-20 10:03:57 · 201 阅读 · 0 评论 -
迭代器使用
迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。在一书中提供了23中设计模式的完整描述,其中iterator模式定义如下:提供一种方法,使之能够。提供读写操作,并能以跳跃的方式访问容器的任意数据,是功能最强的迭代器。读写,支持++、--、[n]、-n、=提供读写操作,并能向前推进迭代器。提供读写操作,并能向前和向后操作。只读,支持++、==、!读写,支持++、==、!读写,支持++、--,原创 2024-06-20 09:41:02 · 298 阅读 · 0 评论 -
C++容器中的迭代器
我使用C++中的vector容器进行数据存储和遍历的示例。在代码中,首先创建了一个名为v的vector容器,其中存储int类型的数据。接下来,使用迭代器iterator进行遍历,通过begin和end函数获取容器的起始和结束迭代器。使用while循环和迭代器逐个输出容器中的数据。总结代码技术点是使用vector进行数据存储和遍历的基本操作,以及使用迭代器进行容器的遍历。C++容器中的迭代器是一种用于遍历容器元素的对象,它提供了访问容器中元素的能力,并支持迭代器间的算术操作和比较操作。原创 2024-06-19 17:10:30 · 165 阅读 · 0 评论