2013-12-09 384 views
-1

我是新來的C++,我想創建一個具有4個功能(插入,刪除,搜索和打印)的動態數組。我設法做了插入部分,但不知道如何繼續'刪除'功能。動態數組C++(刪除)

這是想實現:

  • 從用戶輸入
  • 搜索與數字
  • 如果發現刪除
  • 打印新的列表 無效SDI ::陣::刪除( int removeData)

這是我的數組頭文件

#ifndef ARRAY 
#define ARRAY 

namespace SDI 
{ 
typedef int StoredData; 

class Array 
{ 
private: 
    int Capacity; 
    int size; 
    StoredData * bufferPtr; 
public: 
    Array(); 
    ~Array(); 
    void insert (int addData); 
    void remove (int removeData); 
    int search (int searchData); 
    void print(); 

}; 
} 

#endif 



void SDI::Array::remove(int removeData) 
{ 
    for(int i = 0; i<size; i++) 
    { 
     if(bufferPtr[i] == removeData) 
     { 
      removeData = bufferPtr[i]; 
      int newSize = size -1; 
      //copy existing data 
      //delete removeData 
      //print array list without the deleted element 
     } 
    } 
} 

任何建議表示讚賞

感謝

+0

應指定bufferPtr至少是什麼。而'bufferPtr [removeData]'最好看起來可疑。 – mornfall

+1

什麼是removeData? –

+0

'removeData'是一個數組索引或值需要被發現和刪除? – yuan

回答

-1

不能調整的陣列,動態或以其他方式。如果你想真正移除一個數組中的元素。您必須創建一個大小合適的相同陣列來替換舊陣列。

0

這可能會幫助您:

void SDI::Array::remove(int removeData) 
{ 
    for(int i=0;i<size;i++) 
    { 
     if(bufferPtr[i] == removeData) 
     { 
      for(int j=i+1;j<size;j++) 
      { 
       bufferPtr[j-1]=bufferPtr[j]; 
      } 
      size--; 
      int newSize = size-1; 
      break; 
     } 
    } 
    printf(bufferPtr); 
} 
+0

它應該是'size - ;''newSize = size - 1' – yuan

+0

是的,我試圖編寫代碼,以便它與發佈的內容保持相似!謝謝您的幫助 ! –

+0

您應該可以檢查代碼的其他部分以及通過對象調用上述函數的方式! –