Что говорит стандарт о том, как определение четкости вектора меняет емкость?

Этот веб-сайт подразумевает, что очистка вектора МОЖЕТ изменить емкость:

http://en.cppreference.com/w/cpp/container/vector/clear

Многие реализации не будут освобождать выделенную память после вызова clear (), фактически оставляя значение () вектора неизменным.

Но, согласно @JamesKanze, это неверно, и стандартные мандаты, которые ясно, не изменят емкость.

Что говорит стандарт?

One Solution collect form web for “Что говорит стандарт о том, как определение четкости вектора меняет емкость?”

В зависимости от версии стандарта, который вы просматриваете, clear определяется как эквивалент erase(begin(), end()) или (в C ++ 11):
«Уничтожает все элементы в a. Invalidates все ссылки, указатели и iteratorы, ссылающиеся на элементы a и могут аннулировать iterator прошедшего конца».

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

 std::vector v; for (int i = 0; i != 5; ++ i) { v.push_back(i); } assert(v.capacity() >= 5); v.clear(); assert(v.capacity() >= 5); v.push_back(10); v.push_back(11); std::vector::iterator i = v.begin() + 1; v.push_back(12); v.push_back(13); *i = 42; // i must still be valid, because none of // the push_back would have required an // increase of capacity 

(Причина изменения формулировки на C ++ 11: комитет не хотел требовать MoveAssignable для clear , что было бы, если бы оно было определено с точки зрения erase .)

Interesting Posts

Какова наиболее эффективная библиотека compilationов Java?

как определить ориентацию устройства Android?

Использовать collect_list и collect_set в Spark SQL

прием HTTPS-соединений с самозаверяющими сертификатами

Поделитесь всем домашним каталогом между хостом и гостем с помощью Virtual Box

Принтер Epson WorkForce поддерживает электропитание

Жесткая ссылка не работает в Mac OS X в режиме графического интерфейса пользователя

Реверсирование связанного списка в Java, рекурсивно

Почему объекты R не печатаются в функции или в цикле «для»?

Блокировать обновления Windows 10 P2P с помощью корпоративного межсетевого экрана

Есть ли способ предотвратить создание Mac файлов подчеркивания dots?

Настройка папки imap для отправки

В чем разница между Скрытой учетной записью администратора и обычной учетной записью администратора в Windows 10?

В чем разница между «Запросить полезную нагрузку» и «Данные формы», как показано на вкладке «Инструменты разработчика Chrome».

В чем разница между «разоблачением» и «публикацией» в Docker?

Давайте будем гением компьютера.