C++ Primer第十章④

C++ Primer

泛型算法

泛型算法结构

都是对之前一些细节的总结,我就不扯了,也没什么实质内容。

特定容器算法-链表list和forward_list

与其他容器不同,链表定义了独有的一些函数:sort, merge, remove, reverse和unique。因为通用版本的sort要求随机访问迭代器,因此不能用于链表,链表要用双向迭代器或前向迭代器:

函数 含义,返回均为void
lst.merge(lst2)(重载版本lst.merge(lst, comp))将lst2的元素并入lst中,二者原先必须是有序的,第一个使用<第二个自定义comp
lst.remove(val(重载版:lst.remove_if(pred))删除与val相等或使一元谓词pred为真的所有元素
lst.reverse()翻转lst的元素顺序
lst.sort()(重载版lst.sort(comp))使用<或自定义比较操作排序元素
lst.unique()(重载版lst.unique(pred))删除同一个值的连续拷贝。第一个版本使用==,第二个使用给定的二元谓词

splice函数

链表类型独有,主要用来移动一个链表的元素到另一个链表的指定位置:

函数 含义
lst.splice(p, lst2)p是一个指向lst中元素的迭代器,函数将lst2的所有元素移动到p之前的位置,并且将元素从lst2中删除,lst2类型必须与lst一样,且不能是同一个链表
lst.splice(p, lst2, p2)p2是一个指向lst2中元素的迭代器,函数将p2指向的元素移动到lst中,lst2与lst可以是同一个链表
lst.splice(p, lst2, b, e)b和e必须表示lst2中的合法范围,将这个范围的元素移动到lst中,lst和lst2可以是同一个链表,但p不能指向b和e之间的元素

还有一个与splice类似的函数splice_after,差别在于移动的位置,用的时候再查询好了,说那么多我自己也记不住。

链表的这些特有操作会改变容器

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务