【STL】
文章平均质量分 85
Root_Smile
这个作者很懒,什么都没留下…
展开
-
【STL】string
这是为了与C语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成C中的字符串样式。由于我们知道string的长度可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了,这样的转换不可以直接赋值。C++提供的由C++字符串得到对应的C_string的方法是使用data()、c_str()和copy(),其中。这个与char*的情况相同,也可以直接赋值,但是也会出现上面的问题,需要同样的处理。原创 2024-04-11 16:10:11 · 1221 阅读 · 0 评论 -
【STL】map&multimap
sort排序不能针对关联容器(set,map),因为sort会破环关联容器的底层数据结构,详细解释如下。map中的元素是pair类型对象,每个pair类型由关键字—值(key-value)组成:关键字起到索引的作用,值则表示与索引相关联的数据。字典是一个很好的map例子,可以将单词作为关键字,将单词释义作为值。原创 2024-04-10 18:20:30 · 526 阅读 · 0 评论 -
【STL】set&multiset
public:bool operator()(int v1, int v2) const // 后面一定要加这个const表示这个函数是常函数,不然vs2019会报错it!= s.end();// 自定义排序值从大到小it!= s2.end();return 0;原创 2024-04-10 11:54:23 · 1078 阅读 · 0 评论 -
【STL】vector
比如结构体// 名字int age;// 年龄// 班级// 学生1,学生2return 0;我们可以通过一个构造函数快速构建这样的一个动态数组,而用构造函数的写法和用循环是等价的。原创 2024-04-09 00:07:03 · 969 阅读 · 0 评论 -
【STL】查找
从上面例子可以看出,使用了multimap是可以存储重复的键值的,所以使用equal_range开始找’a’键,发现满足条件的有4个,这时返回2个迭代器,第一个迭代器是’a’:10这一组键值对,第二个迭代器是最后一个’a’:40这组满足条件的键值对的后一个键值对’b’:10。在代码中注释的部分,使用了函数upper_bound,这个函数功能和用例里的find_if实现一样,都是找大于6的数,返回的也是迭代器。即在容器[begin, end)区间内,寻找是否有指定的value值的元素,如果有,返回该元素的。原创 2024-04-08 16:27:43 · 858 阅读 · 0 评论 -
【STL】排序
因此,如果容器中存储的是自定义的类对象,则该类的内部必须提供移动构造函数和移动赋值运算符。同样,如果选用标准库提供的其它排序规则,元素类型也必须支持该规则底层实现所用的比较运算符。当选用默认的升序排序规则时,容器中存储的元素类型必须支持小于运算符;同样,如果选用标准库提供的其它排序规则,元素类型也必须支持该规则底层实现所用的比较运算符;这种情况下,如果容器中存储的是自定义的类对象,则该类的内部必须拷贝构造函数和赋值运算符的重载。void sort(要排序元素的起始地址,要排序元素的结束地址,比较函数);原创 2024-04-08 00:34:36 · 861 阅读 · 0 评论 -
【STL】list是双向循环链表中循环可以实现什么功能?
另外,List模板,不建议你使用iterator(迭代器),因为每一个node都不知道自己是第几个node,如果你使用迭代器指定你要访问第n个node的数据,它总是从首元素开始一个个数到第n,然后才返回数据给你。链表的内存结构是循环的,每一个来节点(node)结构,node结构包含一个指向之前节点的指针,另外一个指向之后的节点,以及一个数据元素(你这里是int),所以一个node结构自己是不知道自己是list中的第几个(没有储存相应的信息)。所以,++it指向的是终结记号,上面是没有数据的,当然输出错误。转载 2024-04-07 18:13:46 · 16 阅读 · 0 评论 -
【STL】链表(list)
list采用模板类实现,对象的默认构造形式:list lstlist对象的带参数构造//构造函数将n个elem拷贝给本身//构造函数将[beg,end)区间中的元素拷贝给本身//拷贝构造函数例如:listlst1(lst);eg://创建一个空list//创建一个含有10个元素的list//创建含有3个元素2的list//使用lst2初始化lst4//同lst4。原创 2024-04-07 15:36:20 · 743 阅读 · 0 评论 -
【STL】概述及总结(很全!!!)
STL: (Standard Template Library) 标准模板库STL广义上讲分为三类,,容器和算法通过迭代器可以进行无缝地连接,容器里面存数据,算法进行排序或查找,迭代器是用来访问容器里的数据的。STL的一个重要特点就是数据结构和算法的分离,即数据的存储和数据的访问进行了分离,如栈的栈顶指针为栈数据的常用访问,而栈的数据存储是通过栈的数据结构。原创 2024-04-07 15:06:16 · 288 阅读 · 0 评论 -
【STL】队列(queue)
在C++的标准模板库(STL)中,优先队列(Priority Queue)是一种特殊的队列,它允许元素按照某种优先级进行排序和出队,其底层是用堆来进行实现的。在C++的标准模板库(STL)中,双端队列(Deque,全称“double-ended queue”)是一种具有队列和栈性质的复合型容器适配器。Queue所有元素的进出都必须符合”先进先出”的条件,只有queue的顶端元素,才有机会被外界取用。Queue不提供遍历功能,也不提供迭代器。双端队列结合了栈和队列的特点,可以在两端进行元素的插入和删除操作。原创 2024-04-06 20:31:40 · 1161 阅读 · 0 评论 -
【STL】栈(stack)
/typename为类型名,stackname为栈的命名,类型名可以不写//stack对象的拷贝构造与赋值//拷贝构造函数//重载等号操作符。原创 2024-04-06 16:29:25 · 740 阅读 · 0 评论