Вам просто нужно перезаписать то, что вы удаляете, со следующим значением в массиве, распространить это изменение и затем иметь в виду, где новый конец:
int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// delete 3 (index 2)
for (int i = 2; i < 8; ++i)
array[i] = array[i + 1]; // copy next element left
Теперь ваш массив {1, 2, 4, 5, 6, 7, 8, 9, 9}
. Вы не можете удалить дополнительный 9
, так как это массив статического размера, вам просто нужно его игнорировать. Это можно сделать с помощью std::copy
:
std::copy(array + 3, // copy everything starting here
array + 9, // and ending here, not including it,
array + 2) // to this destination
В C ++ 11 вместо этого использовать std::move
(перегрузка алгоритма, а не перегрузка утилиты).
В общем случае используйте std::remove
для удаления элементов, соответствующих значению:
// remove *all* 3's, return new ending (remaining elements unspecified)
auto arrayEnd = std::remove(std::begin(array), std::end(array), 3);
. В более общем смысле, есть std::remove_if
.
Обратите внимание, что использование std::vector<int>
может здесь более уместно, так как это «истинный» динамически распределенный массив изменения размера. (В том смысле, что запрос на его size()
отражает удаленные элементы.)
Насколько я знаю, Обновление (наряду с Cookie Набора и возможно некоторыми другими собственными псевдозаголовками) были созданы Netscape в еще начальном этапе Интернета и был в основном (но не совсем) стандарт с тех пор. Поскольку примерно каждый поддержка браузера это, Обновление довольно безопасно использовать - и обычно.
я предполагаю, что это никогда не становилось частью официальных стандартов, потому что у них уже были условия для этого с кодами статусов.
от спецификации HTML 4.01 W3C, кавычки:
META и HTTP-заголовки
атрибут http-equiv может использоваться вместо атрибута имени и имеет специальное значение, когда документы получены с помощью Протокола передачи гипертекста (HTTP). Серверы HTTP могут использовать имя свойства, определенное атрибутом http-equiv для создания [RFC822] - заголовок стиля в ответе HTTP. См. Спецификацию HTTP ([RFC2616]) для получения дополнительной информации о допустимых HTTP-заголовках.
то, Что это означает, - то, что, когда Вы используете эти <meta http-equiv="refresh" url="..."/>
тег, Вы на самом деле даете браузеру команду действовать, как будто было Refresh
отправляемый заголовок.
хороший обзор истории его может быть найден в http://www.securiteam.com/securityreviews/6Z00320HFQ.html
Согласно Википедия: Перенаправление URL :
Это - собственное/нестандартное расширение Netscape. Это поддерживается большинством веб-браузеров.
Я полагаю, что это было первоначально расширением Netscape и не было стандартизировано, потому что это удерживается от использования W3C:
Это - вероятно, расширение Microsoft HTTP; по крайней мере, они предлагают его использование на КАК К: Включите Клиентское Получение по запросу для веб-серверов, Сайтов и Папок , и это, кажется, подтверждает к синтаксису обновления meta.