Это мой первый вопрос здесь, и я очень рад быть частью сообщества.Удалить элемент из массива, а затем переместить другие элементы поверх
У меня возникла мотивация для публикации здесь, столкнувшись с серьезной проблемой с функцией удаления. Я пытаюсь удалить с помощью ключевых слов индекса и подсчета, я пытаюсь удалить полосы элементов из массивов. Я выписал разные сценарии на бумаге, но не нашел заметной картины, поэтому я должен спросить здесь.
Допустим, у вас есть char array[] = {'A','B','C','D','E'};
Моя функция имеет удалить этот прототип void remove(char arr[], int& size, int element, int count)
Если бы можно было написать, с размером уже объявленную, remove(array, size, 2, 2)
затем при печати массив должен напечатать ABE. Функция должна перейти к индексу 2, затем удалить два элемента, а затем переместить остальные.
Вот функция, которую я пытался реализовать:
void remove(char arr[], int& size, int element, int count) {
for (int i = element; i < count; i++) {
arr[element] = arr[element + 1];
}
size = size - count; }
Я мог бы написать функцию, чтобы соответствовать конкретным случаям испытаний, но я не могу обобщить его работать на все различные входы. Я довольно уверен, что size = size - count;
верен, поскольку он последовательно «удаляет» правильное количество элементов с конца, но я не уверен на 100%.
Как я могу реализовать эту функцию правильно? Я вижу, что другие задавали подобные вопросы, но не для того, чтобы удалять потенциально несколько элементов за раз. У меня также есть нулевое знание векторов, и я не думаю, что использование их будет работать для остальной части моей программы.
вчера только что видел по существу один и тот же вопрос: http://stackoverflow.com/q/26434416/103167 –
О, я новичок; ничего в этом вопросе мне не знакомо :) – RealTimeDouble