2012-05-22 60 views
-1

我已經創建了一個列表並將一些值加入其中。我的列表將其內容複製到數組中,然後打印。我的問題是,如何刪除我創建的列表?Linkin List on C++

這裏是我的代碼:

void main() 
{ 
    std::list<char> list; 

    while (1) 
    { 
     char in=0; 
     while(1) 
     { 
      scanf("%c",&in); 
      if(in=='\n') break; 
      list.push_back(in); 
     } 
     char* array=new char[list.size()]; // create a dynamic array 
     list<char> first; 
     std::copy(list.begin(),list.end(),array); // copy the data 
     for (int i=0 ; i<list.size() ; i++) printf("%c",array[i]); 
       printf("\nsize of array is: %d\n", list.size()); 
       delete [] array; // destroy the dynamic array 
    } 
} 
+0

'list.clear()'? (如果你想清空這個列表)。否則,你不必刪除你的列表,你沒有在堆上創建它,也沒有指向在堆上分配的數據的指針。 – birryree

+0

您是否正在刪除列表,或刪除列表中的所有內容? – RoneRackal

+0

很難看出你的問題是什麼,你正在釋放你在調用delete時創建的'array',清除你所需要的所有元素的'std :: list' [list.clear()]( http://www.cplusplus.com/reference/stl/list/clear/)。 –

回答

0

試圖占卜你的意思,我猜你想叫「名單」外循環的每次迭代後清除其內容的列表。 list.clear()將做到這一點,就像將列表聲明移動到外部循環中一樣。析構函數將正確釋放您分配的任何資源,並且每次迭代都會有一個新實例。