'Обновите' HTTP-заголовок

Вам просто нужно перезаписать то, что вы удаляете, со следующим значением в массиве, распространить это изменение и затем иметь в виду, где новый конец:

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() отражает удаленные элементы.)

63
задан bignose 1 May 2009 в 06:30
поделиться

5 ответов

Насколько я знаю, Обновление (наряду с Cookie Набора и возможно некоторыми другими собственными псевдозаголовками) были созданы Netscape в еще начальном этапе Интернета и был в основном (но не совсем) стандарт с тех пор. Поскольку примерно каждый поддержка браузера это, Обновление довольно безопасно использовать - и обычно.

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

57
ответ дан Alistair 7 November 2019 в 12:46
поделиться

от спецификации 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

18
ответ дан Loki 7 November 2019 в 12:46
поделиться

Согласно Википедия: Перенаправление URL :

Это - собственное/нестандартное расширение Netscape. Это поддерживается большинством веб-браузеров.

12
ответ дан Greg 7 November 2019 в 12:46
поделиться

Я полагаю, что это было первоначально расширением Netscape и не было стандартизировано, потому что это удерживается от использования W3C:

http://www.w3.org/TR/WCAG10-HTML-TECHS/#meta-element

5
ответ дан Alnitak 7 November 2019 в 12:46
поделиться

Это - вероятно, расширение Microsoft HTTP; по крайней мере, они предлагают его использование на КАК К: Включите Клиентское Получение по запросу для веб-серверов, Сайтов и Папок , и это, кажется, подтверждает к синтаксису обновления meta.

-5
ответ дан activout.se 7 November 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: