2015-10-05 78 views
-2

假設您有一個指向列表中某個對象的迭代器,並且您希望編寫一個函數來將該迭代器指向的任何對象複製到另一個對象中指定清單。這可能嗎?對於exC++在列表中插入一個迭代器指向的對象

例如

std::list<Customer> customer; 
for (customer=customers.begin(); customer!=customers.end(); ++customer){ 
    std::list<Inventory>::iterator tool; 
    for (tool=inventory.begin(); tool!=inventory.end(); ++tool){ 
      tool->addToWaitlist(customer); 
     } 
} 

其中

void addToWaitlist(std::list<Customer>::iterator customer){ 
      std::list<Customer>::iterator person; 
      if (!wait_list.empty()){ 
        for (person=wait_list.begin(); person!=wait_list.end(); ++person){ 
          // Add customer with respect to time stamp 
          //if (customer.getTime() <= person->getTime()){ 
          //  wait_list.insert(person, customer); 
          } 
        } 
      } else { 
        // Add first person to wait list 
        wait_list.push_back(customer); 
      } 
    } 
+1

舉個例子? –

+1

是的。請顯示你的代碼。 –

+1

_「這是可能的嗎?」_是的,這是可能的。你有沒有遇到過這樣的問題?請逐字顯示相關的問題代碼和所有錯誤信息。 –

回答

2

這是很簡單的:

// given some T and the following lists 
list<T> l1, l2; 
list<T>::iterator objit=l1.begin(); // picked the first item in l1 since it's easy 

// copy the item to l2 
l2.push_back(*objit); 
+0

處理指針列表時不是那麼簡單。 –

+0

如果你這麼說。它的工作原理是一樣的。 OP中沒有人提到過指針,所以我不確定你的意思。 – Blindy

+0

這不一樣。如果你有一個指針列表,那麼直接指針副本只會獲得一個淺拷貝,所以你基本上最終會得到兩個指向同一個對象的指針而不是深度拷貝。 –