C++ list::splice()用法
因為 list 容器不支持隨機訪問 所以 merge() remove() reverse() sort()和 unique()泛型算法最好不要用在 list 對象上 盡管這些算法都沒有顯式地要求一個 RandomAccessIterator標準庫為每個算法都提供了專門的 list 成員實例 比如專門為 list 的 splice()操作):
- list::merge() 用第二個有序的 list 合并一個有序 list
- list::remove() 刪除等于某個值的元素
- list::remove_if() 刪除滿足某個條件的元素
- list::reverse() 將 list 中元素反向排列
- list::sort() 排序 list 的元素
- list::splice() 把一個 list 的元素移到另一個 list 中
- list::unique() 刪除某個元素的重復連續拷貝
list::splice()
void list::splice( iterator pos, list rhs ); void list::splice( iterator pos, list rhs, iterator ix ); void list::splice( iterator pos, list rhs,iterator first, iterator last );splice()把一個或一級元素從一個 list 移到另一個中去 它有三種形式 把一個 list 的全部元素搬移到另一個中去 把一個 list 中包含的一組元素搬移到另一個中去 以及把一個 list中的單個元素搬移到另一個中去 每種形式都給出了一個指出插入一個或一組元素的位置的iterator 例如 給出下列兩個 list:
int array[ 10 ] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 }; list< int > ilist1( array, array + 10 ); list< int > ilist2( array, array+2 ); // 包含 0, 1下面使用 splice()把 ilist1 的第一個元素移到 ilist2 中 現在 ilist2 包含元素 0 1 0 而ilist1 不再包含 0:
// ilist2.end() 指示要接合元素的位置 // 被接合的元素在該位置之前 // ilist1 指示從哪個 list 中移動元素 // ilist1.begin() 指示要被移動的元素 ilist2.splice( ilist2.end(), ilist1, ilist1.begin() )在 splice()的下一個用法中 傳遞了兩個 iterator 指示要移動元素的子范圍:
list< int >::iterator first, last; first = ilist1.find( 2 ); last = ilist1.find( 13 ); ilist2.splice( ilist2.begin(), ilist1, first, last );在這種情況下 元素 2 3 5 和 8 被從 ilist1 移到 ilist2 的前部 現在 ilist1 含有五個元素 1 1 13 21 和 34 為了把剩下這些元素移到 ilist2 中 可以使用 splice()操符的最后一種形式
list< int >::iterator pos = ilist2.find( 5 ); ilist2.splice( pos, ilist1 );現在 ilist1 是空的 剩下的五個元素被移到 ilist2 中 放在值為 5 的元素之前的位置
總結
以上是生活随笔為你收集整理的C++ list::splice()用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] yaml基础
- 下一篇: [精选代码笔记]Anagram, gro