我面臨着與剪接的問題列表自身。請注意,我已經通過splice() on std::list and iterator invalidation 去那裏的問題是關於兩個不同的列表。但我的問題是關於同一個列表。關於STL目錄::拼接
mylist.splice(mylist.end(), mylist, ++mylist.begin());
看來,gcc 3.x是無效的移動迭代器。所以我想它正在解除分配並再次分配節點。這對於同一個列表沒有意義。 SGI確實告訴這個拼接版本不應該使任何迭代器失效。這是gcc 3.x的錯誤,如果有解決方法嗎?
在平均時間我會通過stl_list.h文件。但堅持transfer()函數,我無法找到這些定義。
struct _List_node_base
{
_List_node_base* _M_next; ///< Self-explanatory
_List_node_base* _M_prev; ///< Self-explanatory
static void
swap(_List_node_base& __x, _List_node_base& __y);
void
transfer(_List_node_base * const __first,
_List_node_base * const __last);
void
reverse();
void
hook(_List_node_base * const __position);
void
unhook();
};
你有什麼想法,我在哪裏可以找這些函數的定義?