Проверить вектор, прежде чем очистить? - PullRequest
1 голос
/ 21 февраля 2020

Я не уверен, но я думаю, что я прочитал, что вы должны удалять вектор, только если он не пустой. Поэтому теперь я всегда проверяю перед удалением вектора:

if (!vector.empty()) {
    vector.clear();
}

Однако я больше не нахожу ничего о том, является ли этот шаг ненужным.

Запрещено ли использовать clear на пустой вектор?

Ответы [ 2 ]

4 голосов
/ 21 февраля 2020

Проверка не нужна,

и снижение читабельности IMO.

2 голосов
/ 21 февраля 2020

Действительно, была проблема , связанная с неопределенным поведением при очистке пустых последовательностей или ассоциативных контейнеров, но теперь это исправлено, и совершенно безопасно для вызова std::vector::clear без , предварительно проверяющей, является ли std::vector пустым.

...