• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Удаление элемента в динамическом массиве

  • Автор темы Dayne
  • Дата начала
D

Dayne

Доброевремя суток. Нужна помощь в написании функции, которая удаляет элемент из динамического массива.
По факту что имеем:
Код:
class rl: public vector <int> // создаю новый класс на основе vector
{
public:
bool	sign;	// переменная sign - отвечает за знак числа
int	speed;	// переменная speed - отвечает за скорость изменения внутреннего поля
void		 del(int);  // функция-член удаления N-го элемента

};
Что нужно - нужна реализация функции del(int n), которая будет удалять n-ый элемент из массива и при этом размер массива должен оставаться корректным. Я пытался написать эту функцию
Код:
void rl::del(int n)
{
for(int i=n;i<this->size()-1;i++)this[i]=this[i+1]; // сдвигаем элементы от n-го до последнего на 1 влево
this->pop_back(); // удаляю последний элемент
}
но в силу недостаточного опыта с задачей не справился.
Заранее спасибо!
 
D

destr

Вообще очень интересная задача:)
Вы используете vector ну так и используйте его методы
 
D

Dayne

спасибо - не знал что есть такое, а с итераторами вообще еще не разобрался. Правда еще надо поискать это все на русском :)
 
E

European

Вообще говоря, вектор является классом-значением (просьба к слову "класс" не придираться), а наследование от таких классов является дурным тоном
 
D

Dayne

European, дурным тоном можно считать все что угодно, и ваше пусть даже очень авторитетное мнение тоже является субъективным. Не сочтите за грубость, но я сомневаюсь что вы являетесь одним из законодателей хорошего/дурного тона в програмировании.
Нет плохого и хорошего кода - есть работающий и не работающий((с) Кариган).
Многие рассказывают что оператор безусловного или принудительного (где-то он goto, где-то просто go, где-то еще иначе)перехода это дурной тон, а спуститесь к ассемблеру там все забудут про это
 
E

European

и ваше пусть даже очень авторитетное мнение тоже является субъективным
Во-первых, авторство этого утверждения принадлежит не мне. Хотя фамилии Саттера и Александреску врядли вам что-то скажут. Можете просветится, почитав их книгу "Стандарты программирования на С++". А во-вторых, для вас С++ это Си с классами, так что дальше говорит не о чем
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!