动态数组C ++(删除)

时间:2013-12-09 01:30:31

标签: c++

我是C ++的新手,我正在尝试创建一个具有4个功能(插入,删除,搜索和打印)的动态数组。我设法做插入部分,但不知道如何继续使用'删除'功能。

这是我想要实现的目标:

  • 来自用户的输入
  • 搜索该号码
  • 如果发现删除
  • 打印新列表 void SDI :: Array :: remove(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
        }
    }
}

任何建议表示赞赏

感谢

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:-1)

您无法动态或以其他方式调整数组大小。如果您希望真正删除数组中的元素。您必须创建一个相同的数组,该数组已正确调整大小以替换旧数组。