list
list 容器迭代器最大的不同在于,其配备的迭代器类型为双向迭代器,而不再是随机访问迭代器。
它们支持使用 ++p1、 p1++、 p1–、 p1++、 *p1、 p1==p2 以及 p1!=p2 运算符,
p1[i]:不能通过下标访问 list 容器中指定位置处的元素。
p1-=i、 p1+=i、 p1+i 、p1-i:双向迭代器 p1 不支持使用 -=、+=、+、- 运算符。
p1<p2、 p1>p2、 p1<=p2、 p1>=p2:双向迭代器 p1、p2 不支持使用 <、 >、 <=、 >= 比较运算符。
insert不会导致原迭代器失效。erase后返回下一个元素迭代器。
splice
splice() 成员方法移动元素的方式是,将存储该元素的节点从 list 容器底层的链表中摘除,然后再链接到当前 list 容器底层的链表中。这意味着,当使用 splice() 成员方法将 x 容器中的元素添加到当前容器的同时,该元素会从 x 容器中删除。
remove
void remove (const value_type& val);
删除list中所有满足条件值的元素
unique
功能:相邻元素相同时,只保留一个元素
void unique()
自定义规则,传入一个函数,当函数返回值为真是删除
void unique(BinaryPredicate)//传入一个二元谓词函数
remove_if
mylist.remove_if([](int value) {return (value < 10); });
满足条件的都删除
forward_list
单链表,空间利用率更高
advance
移动迭代器void advance (InputIterator& it, Distance n);让迭代器+n,如果不支持这++ ++…到n