我有list
的lists
,其元素類型爲my_struct
。我用兩個迭代器(一個用於外部列表,一個用於內部列表)遍歷每個元素並進行一些計算。每次我通過一個內部列表時,我都會檢查一個標準,並且(如有必要)嘗試使用splice()
函數將此內部列表分成兩部分。我想將內部列表的第二部分重新定位到外部列表(緊跟當前內部列表之後)。如何使用拼接在C++中重構列表清單()
這裏是我到目前爲止有:
std::list<std::list<my_struct>> myList;
std::list<std::list<my_struct>>::iterator outerIter;
std::list<my_struct>::iterator innerIter;
for (outerIter = myList.begin(); outerIter != myList.end(); outerIter++)
{
std::list<my_struct> &listEntry = *outerIter;
for (innerIter = listEntry.begin(); innerIter != listEntry.end(); innerIter++)
{
// some calculations
}
if (criterion)
{
myList.splice(outerIter, listEntry, innerIter, listEntry.end());
}
}
這段代碼應該做的是重新定位std::list<my_struct>
開始在innerIter
和結束在listEntry.end()
作爲一種新的內部列表僅落後於當前檢查內部列表。
我希望你能理解我的意思,因爲我不知道該怎麼解釋,這更容易理解。
我已經嘗試過編寫splice
部分的不同方式,但我總是收到錯誤。
所以,如果有人有一個關於如何正確編程的想法,那麼我會很樂意得到一些幫助。
有什麼問題嗎? – Barry
問題是如何使用'splice()'函數寫入正確的行。 – jkl
當我調試時,我得到'錯誤C2664'說第二個參數'listEntry'不能轉換爲'std :: list <_Ty>&'。 – jkl