Shrink to fit что это
std::vector :: shrink_to_fit
Compiler support | ||||
Freestanding and hosted | ||||
Language | ||||
Standard library headers | ||||
Named requirements | ||||
Feature test macros (C++20) | ||||
Language support library | ||||
Concepts library (C++20) | ||||
Diagnostics library | ||||
General utilities library | ||||
Strings library | ||||
Containers library | ||||
Iterators library | ||||
Ranges library (C++20) | ||||
Algorithms library | ||||
Numerics library | ||||
Localizations library | ||||
Input/output library | ||||
Filesystem library (C++17) | ||||
Regular expressions library (C++11) | ||||
Atomic operations library (C++11) | ||||
Thread support library (C++11) | ||||
Technical specifications | ||||
Symbols index | ||||
External libraries |
Requests the removal of unused capacity.
If reallocation occurs, all iterators, including the past the end iterator, and all references to the elements are invalidated. If no reallocation takes place, no iterators or references are invalidated.
Contents
[edit] Parameters
[edit] Return value
[edit] Complexity
At most linear in the size of the container.
[edit] Notes
If an exception is thrown other than by T’s move constructor, there are no effects.
Обзор продавцов и джинс Levi’s 501 Shrink to fit rigid indigo
dave gahan
Новичок
Обзор мужских джинс LEVI’S 501 Rigid Indigo Shrink to fit.
Итак, решил купить я себе самые классические джинсы из всех что есть на свете, а именно LEVI’S 501 Rigid Indigo Shrink to fit.
О том что это действительно так говорит шифр модели/цвета/ткани 005010000, то есть модель 501, все остальное нули, то есть точка отсчета других моделей. Легендарный американский бренд, ткань жесткий деним, цвет индиго, предварительно не усаженные. Именно такими они и были, ну не совсем такими конечно, сама модель трансформировалась. Согласно легенде, ковбои одевали новые джинсы и залазили в поилку для лошадей. И якобы у них там в штатах с тех пор есть поговорка «не видал лошадиной поилки», смысл которой как у нас «муха не сидела»
Вот они на сайте левис. В официальных магазинах Levis есть из чего выбрать (размеры от малых до больших).
Я ношу джинсы 34х30, стало быть мне нужно было бы купить 35х33.
Но длина 33 дюйма даже на официальном сайте Levis отсутствует, поэтому решил взять 36х34, 36 потому что боялся что вдруг мне малы будут после усадки.
Нашел вот этот лот и купил его.
Почта России продолжает деградировать. Последние посылки ко мне идут хоть со штатов, хоть с Китая не менее 1,5 месяцев, приходится заморачиваться с открытием кейса на палке, мне возвращают деньги, через пару недель приходит посылка и я честно снова ее оплачиваю.
Но эта посылка пришла на грани открытия кейса, то есть успела.
Итак посылка пришла, слава богу все цело (в прошлом году мне пришли джинсы зажеванные через какое-то устройство, предполагаю что через шестерни транспортера), были заморочки с составлением всяких актов, в общем жесть.
Вскрываем, осматриваем. Сзади кожаный патч.
Ткань реально жесткая, картон напоминает.
Качество пошива отличное.
Сделано в Египте. У меня есть египетские Levis 505 лайт стоунвош, тоже качество на высоте.
Цифры на пуговице и на бирке совпадают.
Печать на кармане присутствует.
Бирка с надписью LEVIS без микротекста.
Сзади на поясе нету бирки 501, даже не знаю по какому принципу ее туда нашивают, не всегда есть эта бирка.
Края ткани на штанинах оверложены.
Замерил размер, все точно как в аптеке пояс 36 дюймов, штанина 34.
Ну что приступаем к усадке.
Набираем в ванную горячую воду и ложим туда джинсы.
Держим в районе 30мин и развешиваем сушить.
Когда будут просто влажными, одеваем и ходим как идиот по квартире часа 2)))
Снимаем и сушим насухо.
Джинсы могут усесть на 1-2 размера. Ходил я во влажных джинсах зря, так как все таки мне нужно было брать 35 по поясу чтобы сели на 34, тогда бы они сели по фигуре, а так они сели несколько свободно. В принципе не сваливаются, но ремень все же нужен. Деним стал мягче.
Вот для сравнения джинсы до усадки и после
Так как длины которая мне нужна не существует, то и сели они на 31 дюйм, а мне, напомню нужно 30, поэтому пришлось еще идти в ателье отрезать лишнее.
То есть сели они точно как написано: в длину на 3 дюйма (а это не много, ни мало 7,5см), а в поясе на 1 дюйм.
Ну вот результат на фото сели отлично, но если бы не побоялся взять свой точный размер было бы наверное вообще супер-пупер.
Сырой деним или что такое Levi’s 501 Shrink-to-Fit
Для многих из вас наверняка будет новостью то, что 501 модель Levi’s имеет несколько разновидностей – помимо женских 501х и обновленной линейки 501 СТ (большая редкость в наших широтах, но в нашем магазине есть), существует подвид под названием Levi’s 501 Shrink-to-Fit. Эти джинсы делаются из так называемого сырого денима – саржи, которая не прошла заводскую стирку и какую-либо другую обработку поверхности. Соответственно, такие джинсы при покупке не могут иметь никаких потертостей, всегда равномерно окрашены, их ткань на ощупь грубее ткани аналогичных стиранных джинсов.
У джинсов из сырого денима есть две существенных особенности, что позволяет им кардинально отличаться от обычных джинсов, к которым мы все так привыкли.
Вторая особенность – это краска. Сырой деним всегда обладает насыщенным равномерным цветом. Заломы и потертости на таких джинсах появятся со временем, но они будут результатом вашей эксплуатации джинсов, они будут там, где им положено быть, а не там, где их «нарисовали» на фабрике, таким образом делая ваши джинсы уникальными.
По указанным выше причинам джинсы из сырого денима рекомендуется стирать как можно реже, или стирать очень деликатно и только вручную, потому что каждая стирка в машинке неизбежно вытирает часть краски и джинсы якобы теряют свою «персонификацию». На самом деле стирать такие джинсы в машинке можно, для минимизации потери краски стирайте их навыворот при температуре не больше 30 градусов. Если ваши джинсы темного цвета, то будьте готовы к тому, что они будут линять и краситься, посему стирать их нужно отдельно, и очень желательно не одевать под них белые кроссовки, если вы не хотите, чтобы на них появились полосы цвета джинсов.
Джинсы из сырого денима – это как чистый холст, на котором будет отображаться история вашей жизни, по ним будет видно, в каком кармане вы храните телефон, а в каком – связку ключей. Подогнанные идеально под вашу фигуру эти джинсы станут частью вас.
Модели Levi’s 501 Shrink-to-Fit в наличии вы можете посмотреть здесь.
Залишити відповідь Скасувати відповідь
Щоб відправити коментар вам необхідно авторизуватись.
Усадка джинсов Levi’s 501 Shrink-To-Fit
Добрый день! Для холодного времени года хочу приобрести недорогие, но достаточно качественные джинсы. Планирую делать заказ в www.jeanandtop.com Интересует вопрос с усадкой. Читал информацию, что в поясе нужно прибавлять один размер, а по длине целых три, эти джинсы действительно так сильно садятся?
Ещё видел старую инструкцию с картинками где предлагалось носить эти джинсы после покупки около полугода и только потом усаживать для получения лучшего внешнего вида. Действительно нужно поступать таким образом? Читал даже что эти джинсы необходимо усаживать только на себе. Если всё так сложно может быть выбрать более «простые в эксплуатации» джинсы? Хотя мне сам классический цвет у Levi’s 501 Shrink-To-Fit и плотная ткань очень нравится.
Что касается выбора размера, здесь нельзя дать однозначный ответ. Многое зависит от привычки носить джинсы и выбора фита (кто-то любит плотнее, кто-то более расслабленно) Для информации кстати рекомендую прочесть пару статей с этого ресурса по выбору фасона и размера:
Исходя из своего опыта я бы рекомендовал прибавлять размер в поясе, если вы желаете получить немного более расслабленный силуэт. Если брать свой размер в поясе, то джинсы будут иметь классическую плотную посадку, но учтите что сами штанины тоже станут несколько уже (имейте в виду ваше телосложение).
По длине я бы порекомендовал всё же прибавить именно три размера (хотя в магазинах обычно советуют два и «джинэндтоп тоже рекомендует два размера»). Джинсы могут продолжать садится на протяжении нескольких стирок или же могут сесть больше чем предполагалось, и двух размеров «запаса» может не хватить. В поясе джинсы всегда можно растянуть на сантиметр-другой, с длиной всё гораздо сложней.
Вот «калькулятор размеров» сделанный энтузиастами этой модели:
Там можно ввести свой обычный размер, который вы носите у Levi’s 501 североамериканской линейки и калькулятор выдаст вам рекомендацию. В принципе я с ней согласен. Но как я уже писал выше лучше иметь один «лишний» дюйм длины. Что касается «сайз даун» для получения очень узкого фита, то это будет адекватно выглядеть на мой взгляд только для людей худощавого телосложения (где-то до 30-го 31-го размера в поясе).
Является ли shrink_to_fit правильным способом уменьшения емкости `std :: vector` до ее размера?
Синопсис, его основной функцией является запрос контейнера, который связан с уменьшить его способность соответствовать его размеру. Тем не менее, это запрос не является обязательным, и реализация контейнера может свободно оптимизировать иначе и оставить вектор с емкостью, превышающей его размер.
Кроме того, в предыдущем вопросе SO OP не рекомендовалось использовать shrink_to_fit чтобы уменьшить возможности его std::vector к его размеру. Причины не делать этого приведены ниже:
shrink_to_fit ничего не делает или это дает вам проблемы локальности кэша, и это O (n)
выполнить (так как вы должны скопировать каждый элемент в их новый, меньший дом).
Обычно дешевле оставить слабину в памяти. @Massa
Может ли кто-нибудь так любезно ответить на следующие вопросы:
Решение
Имеют ли место аргументы в цитате?
Мера, и вы будете знать. Вы ограничены в памяти? Можете ли вы определить правильный размер заранее? Будет эффективнее reserve чем это сокращаться после факта. В целом, я склонен согласиться с тем, что большинство применений, вероятно, хорошо подходят для слабины.
Если да, то как правильно уменьшить емкость контейнера STL до его размера (по крайней мере, для std :: vector).
И если есть лучший способ уменьшить контейнер, в чем причина существования shrink_to_fit?
Запрос не является обязательным, но альтернативы не имеют лучших гарантий. Вопрос в том, сокращение имеет смысл, если это так, то имеет смысл предоставить shring_to_fit операция, которая может использовать тот факт, что объекты переехал на новое место. То есть если тип T имеет noexcept(true) Переместите конструктор, он выделит новую память и переместит элементы.
Хотя вы можете достичь того же самого внешне, этот интерфейс упрощает работу. Эквивалентно shrink_to_fit в C ++ 03 было бы:
Реализация этого извне была бы немного более громоздкой:
Предполагая, что я правильно выполнил условие if … это, вероятно, не то, что вы хотите писать каждый раз, когда хотите эту операцию.
Другие решения
Поскольку аргументы изначально мои, не против, если я буду защищать их один за другим:
Или shrink_to_fit ничего не делает (…)
Как уже упоминалось, стандарт гласит (много раз, но в случае vector это раздел 23.3.7.3 …), который запрос не является обязательным, чтобы обеспечить широту реализации для оптимизации. Это означает, что реализация Можно определять shrink_to_fit как неоперативный.
(…) или это дает вам проблемы с локальностью кэша
В том случае, если shrink_to_fit является не реализован как неактивный, вы должны выделить новый базовый контейнер с емкостью size() скопировать (или, в лучшем случае, переместить) построить все ваши N = size() новые элементы из старых, уничтожить все старые (в случае перемещения это должно быть оптимизировано, но возможно, что это снова включает цикл над старым контейнером), а затем уничтожить старый контейнер как таковой. Это сделано, в libstdc++-4.9 Точно так же, как описал Дэвид Родригес,
И в libc++-3.5 по функции в __alloc_traits это делает примерно то же самое.
Конечно, можно написать сокращающийся распределитель памяти и использовать его в конструкторе его векторов.
В простом случае, когда векторы больше, чем строки кэша, все это движение оказывает давление на кэш.
Если n = size() Я думаю, это было установлено выше, что, по крайней мере, вы должны сделать один n размерное распределение, n копировать или перемещать конструкции, n разрушения, и один old_capacity размер освобождения.
обычно дешевле просто оставить слабину в памяти
Очевидно, если вы действительно не нуждаетесь в свободной памяти (в этом случае может быть разумнее сохранить ваши данные на диск и перезагрузить их позже по требованию …)
Правильный путь еще shrink_to_fit … вам просто не нужно полагаться на это или очень хорошо знать свою реализацию!
Нет лучшего способа, но причина существования shrink_to_fit УТВЕРЖДАЕТ, что иногда ваша программа может чувствовать нехватку памяти, и это один из способов лечения. Не очень хороший способ, но все же.
«Трюк обмена» обрезает вектор до требуемого размера (из более эффективного SQL):
Особенно полезно, когда вектор пуст, чтобы освободить всю память:
Векторы постоянно отключали код обнаружения утечки памяти моего тестировщика из-за сохраняющегося распределения неиспользуемого пространства, и это прекрасно их разобрало.
Это тот пример, когда меня действительно не волнует эффективность времени выполнения (размер или скорость), но меня интересует точное использование памяти.
Я действительно не знаю, в чем смысл предоставления функции, которая на законных основаниях не может делать абсолютно ничего.
Я обрадовался, когда увидел, что это было введено, и отчаялся, когда обнаружил, что на него нельзя положиться.
Возможно, мы увидим Maybe_sort () в следующей версии.