Я работаю над этим личным проектом, и я немного смущен тем, как работает функция remove().правильное использование функции remove()?
Заголовок:
class IntSet {
public:
IntSet(); //Constructor
~IntSet(); //Destructor
int size() ; //
bool isEmpty();
bool contains(int number1);
void add(int number2);
void remove(int number2);
private:
int* ptr; //pointer to the array
int sizeOfArray; //current size of the array
int currentValue; //number of values currently in IntSet
};
основной (включая только добавить() часть)
#include "IntSet.hpp"
#include <iostream>
IntSet::IntSet(){
sizeOfArray = 10;
currentValue = 0;
ptr = new int[10];
}
IntSet::~IntSet(){
delete[] ptr;
}
//returning the number of values in the IntSet
int IntSet::size()
{
return currentValue;
}
//Determining whether the stack is empty
bool IntSet::isEmpty()
{
if (currentValue == 0)
return true;
else
return false;
}
//defining contains() function
bool IntSet::contains(int number1)
{
for (int i = 0; i < currentValue; i++)
{
if (ptr[i] == number1)
return true;
}
return false;
}
//defining add() function
void IntSet::add(int number2)
{
if (currentValue == sizeOfArray)
{
sizeOfArray = sizeOfArray * 2; //doubling size of arrayCapacity
int* temp = new int[sizeOfArray]; //allocating new one that's twice as large
for (int i = 0; i < currentValue; i++)
{
temp[i] = ptr[i]; //copying old stuff into new one
}
delete[] ptr; //deallocate old array
ptr = temp; //set ptr to new array
}
}
//defining remove() function goes here
Так для функции Add(), я должен был принять параметр ИНТ добавить его в массив. Когда он заполняется, мне нужно удвоить размер массива, скопировать содержимое старого массива в новый, перенаправить указатель на элемент данных в новый массив и затем освободить массив.
Для функции remove() мне нужно просто взять параметр int и удалить его из IntSet, переместив все последующие элементы массива. Должен ли я просто использовать части моей функции добавления и в значительной степени рассказывать об этом для моей функции remove()? Если нет, как мне даже начать писать функцию remove()? При необходимости я покажу остальную часть кода. Спасибо вам, ребята!
Вы хотите, чтобы он удалял int в определенной позиции, первый int с тем же значением или каждый int с этим значением? –
В месте, где нужно удалить i, переместите каждый элемент с i + 1 на i, соблюдая порядок конца массива. –
Вы не добавляете 'number2' в массив в функцию' add'. Вы оставили это, потому что нам это не нужно? –