splice
语法:
1 2 3 |
void splice( iterator pos, list &lst ); void splice( iterator pos, list &lst, iterator del ); void splice( iterator pos, list &lst, iterator start, iterator end ); |
splice()函数把lst连接到pos的位置。如果指定其他参数,则插入lst中del所指元素到现链表的pos上,或者用start和end指定范围。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
源代码 /** * @brief Insert contents of another %list. * @param position Iterator referencing the element to insert before. * @param x Source list. * * The elements of @a x are inserted in constant time in front of * the element referenced by @a position. @a x becomes an empty * list. */ void splice(iterator __position, list& __x) { if (!__x.empty()) this->_M_transfer(__position, __x.begin(), __x.end()); } /** * @brief Insert element from another %list. * @param position Iterator referencing the element to insert before. * @param x Source list. * @param i Iterator referencing the element to move. * * Removes the element in list @a x referenced by @a i and * inserts it into the current list before @a position. */ void splice(iterator __position, list&, iterator __i) { iterator __j = __i; ++__j; if (__position == __i || __position == __j) return; this->_M_transfer(__position, __i, __j); } /** * @brief Insert range from another %list. * @param position Iterator referencing the element to insert before. * @param x Source list. * @param first Iterator referencing the start of range in x. * @param last Iterator referencing the end of range in x. * * Removes elements in the range [first,last) and inserts them * before @a position in constant time. * * Undefined if @a position is in [first,last). */ void splice(iterator __position, list&, iterator __first, iterator __last) { if (__first != __last) this->_M_transfer(__position, __first, __last); |
测试代码
测试结果
输出IntLIst:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
输出IntLIst1:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
输出IntLIst:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0
输出IntLIst:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19