... не такой, как сразу целиком инициализируемый значениями, и не меняющий свой размер std::array.
Я хочу сказать при инстанциации шаблона такого контейнера, что у меня будет максимум N элементов, а в списке инициализации могу задать n = от 0 до N, и size() будет возвращать n, а capacity() — N, и я могу делать всякие push_*, insert, при этом, если вылезаю за capacity, то кидается исключение.
Если такого нет, почему не сделали, вроде полезная штука, нет?
П>... не такой, как сразу целиком инициализируемый значениями, и не меняющий свой размер std::array.
П>Я хочу сказать при инстанциации шаблона такого контейнера, что у меня будет максимум N элементов, а в списке инициализации могу задать n = от 0 до N, и size() будет возвращать n, а capacity() — N, и я могу делать всякие push_*, insert, при этом, если вылезаю за capacity, то кидается исключение.
П>Если такого нет, почему не сделали, вроде полезная штука, нет?
На кастомных аллокаторах вроде запросто делается, не?
Re[2]: Есть ли в плюсах контейнер типа вектора, но
Здравствуйте, пффф, Вы писали:
σ>>На кастомных аллокаторах вроде запросто делается, не? П>Не знаю. Аллокаторы — это же про кучу, не? Не хотелось бы туда лазать
Да не трать ты время на этих бестолочей. Один умеет только рассказывать, как он в боях с еблером яйца себе отморозил, а другой — только надувать щеки и ставить смайлики. Все, ничего другого ты от них не добьешься.
Вот тебе примерный эскиз, как можно кастомизировать аллокатор:
Здравствуйте, пффф, Вы писали:
П>Привет
П>... не такой, как сразу целиком инициализируемый значениями, и не меняющий свой размер std::array.
П>Я хочу сказать при инстанциации шаблона такого контейнера, что у меня будет максимум N элементов, а в списке инициализации могу задать n = от 0 до N, и size() будет возвращать n, а capacity() — N, и я могу делать всякие push_*, insert, при этом, если вылезаю за capacity, то кидается исключение.
П>Если такого нет, почему не сделали, вроде полезная штука, нет?
static_vector — Все элементы в памяти, объекта как std::array
small_vector — Позволяет размещение в динамической памяти, если будет превышено заданное в шаблоне значение.
Re[4]: Есть ли в плюсах контейнер типа вектора, но
Здравствуйте, rg45, Вы писали:
П>>Не знаю. Аллокаторы — это же про кучу, не? Не хотелось бы туда лазать
R>Да не трать ты время на этих бестолочей. Один умеет только рассказывать, как он в боях с еблером яйца себе отморозил, а другой — только надувать щеки и ставить смайлики. Все, ничего другого ты от них не добьешься.
На самом деле, хотелось бы разобраться, как буст использовать с симейком.
Раньше я только под винду использовал с MSVC, собрал один раз бутстрап, собрал один раз буст, сделал boost.props, и его как раз одной строчкой в .vcxproj добавляю, и всё работает.
А тут приходиться пехаться с CMake и GCC, причем разных версий — GCC 7.3 для кути, GCC 13 для сборки нашего софта под винду, и GCC-ARM 13 для сборки под контроллер.
Скачал, наверное надо собрать под разные тулсеты? Попробовал CMake с одним — быстро вылетает по ошибке: windmc не может создать файл что-то-там/simple_log.h или как-то так. Сказал ему, что не надо мне библиотеки simple_log. В логах он пишет: собираю без библиотеки simple_log. Ок. Но потом та же ошибка.
В инете ни хрена полезного не нашел.
Ладно, решил родным b2 собрать. По дефлту он нашел gcc13 и им собрал. Ок. Теперь разбираюсь, как собрать другими компиляторами. А как потом это всё подсунуть в симейк, чтобы в итоге одной строчкой работало, пока даже не представляю.
Так что, если кто использовал буст в такой конфигурации, буду признателен за подсказки
Re[5]: Есть ли в плюсах контейнер типа вектора, но
П>На самом деле, хотелось бы разобраться, как буст использовать с симейком. П>Раньше я только под винду использовал с MSVC, собрал один раз бутстрап, собрал один раз буст, сделал boost.props, и его как раз одной строчкой в .vcxproj добавляю, и всё работает. П>А тут приходиться пехаться с CMake и GCC, причем разных версий — GCC 7.3 для кути, GCC 13 для сборки нашего софта под винду, и GCC-ARM 13 для сборки под контроллер.
Не обессудь, здесь не подскажу. Я с CMake последний раз имел дело в 2019 году, когда помогал дочке курсовую делать. Ну там по справке все находится при желании.
--
Re[5]: Есть ли в плюсах контейнер типа вектора, но
Здравствуйте, пффф, Вы писали:
П>А тут приходиться пехаться с CMake и GCC, причем разных версий — GCC 7.3 для кути, GCC 13 для сборки нашего софта под винду, и GCC-ARM 13 для сборки под контроллер.
В общем, поковырял я буст, и пришел к выводу, что под Cortex-M его не собрать через b2, можно попробовать юзать те либы, которые чисто хидерные, и не парясь вкорячивать кусочки буста прямо в проект.
В общем, шиш, а не в одну строчку в CMake
Re[6]: Есть ли в плюсах контейнер типа вектора, но
потому что там не надо ничего собирать
я буст не собираю
он у меня отдельной папкой в гита каждый день апдейтиться
а в cmake где я использую около деятка его либ
у меня пару строчек
и как это сделать
написано
прикинь
в самых редми буста
но ты туда не ходи
ты сюда ходи
жалуйся
Re[7]: Есть ли в плюсах контейнер типа вектора, но
Здравствуйте, reversecode, Вы писали:
R>пальцем показать как в редми буста прочитать?
Не как, а где
README.md
# Boost C++ Libraries
The Boost project provides free peer-reviewed portable C++ source libraries.
We emphasize libraries that work well with the C++ Standard Library. Boost
libraries are intended to be widely useful, and usable across a broad spectrum
of applications. The Boost license encourages both commercial and non-commercial use
and does not require attribution for binary use.
Хех, а я это находил, пытась собрать буст, как там в начале написано. Надо ж было самое важное в конец запихать. У меня как не собралось по их рецепту, я дальше и не посмотрел Вообще, нормальные люди оглавление делают
Теперь такой вопрос: кто что и как практикует при использовании буста? Какие плюсы, какие минусы?
Как я понял, его кладут в каталог deps/libs (через Fetch или как-то по другому) и подключают через add_subdirectory?
Не слишком ли жирно в каждом проекте держать по бусту? Я использовал с MSVC так — выкачал, собрал, сделал переменную окружения BOOST_ROOT, сделал boost.props, там настраиваю инклюды и пр, и одной строчкой этот пропс подключаю. Не нужен инет, не нужно ничего качать, один раз настроил на машине и 100500 проектов собирай с бустом, и места под 100500 бустов не расходуется.
Здравствуйте, пффф, Вы писали:
П>Теперь такой вопрос: кто что и как практикует при использовании буста? Какие плюсы, какие минусы?
CMake superproject. На первом этапе собираются все 3rdparty. На второй стадии сам проект. 3rdparty редко меняется, поэтому обычно пересборки не нужны.
П>Как я понял, его кладут в каталог deps/libs (через Fetch или как-то по другому) и подключают через add_subdirectory?
Это самый простой вариант.
П>Не слишком ли жирно в каждом проекте держать по бусту? Я использовал с MSVC так — выкачал, собрал, сделал переменную окружения BOOST_ROOT, сделал boost.props, там настраиваю инклюды и пр, и одной строчкой этот пропс подключаю. Не нужен инет, не нужно ничего качать, один раз настроил на машине и 100500 проектов собирай с бустом, и места под 100500 бустов не расходуется.
Мне не жирно.
П>Как-то аналогично на симейке можно сделать?
Собственно, как написано в той доке вначале. Собираешь и куда-то инсталлишь, потом через find_package находишь нужный. Можешь запаковать и выложить куда-нибудь, и качать с помощью того же FetchContent бинарный релиз под свой компилер (FetchContent и из директории брать может).
Можно это сделать через conan. Более простых рецептов нет.