Почему капасити удваиваешь? это распространённая стратегия для уменьшения числа реаллокаций
Распространённая среди кого? Студентов? Для эффективного использования памяти используют вообще коэффициент e, хотя в большинстве реализаций значение варьируется [1.5, 2). Использование коэффициента 2 - неэффективно.
и число e кстати не входит в [1.5, 2) насколько я помню
Да, я перепутал, там золотое сечение, а не е
писали бы где что конкретно, а то как с матерым сишником общаетесь, я все таки недавно его изучаю
Так я вроде конкретно написал, если интересна реализация стрлена смотри решение от гну, либо используй интринсики, цпуайди и препроцессор.
про стек тот же не прям понятно
typedef struct { union { char base_string[16]; struct { uint64_t size; uint64_t capacity; } attr; } base_attr; char str[]; } *String; Что-нибудь такое
мне стало любопытно в чём здесь роль юниона
Чтобы для коротких строк не использовать размер, т.к. его просто посчитать и не нужно использовать в 2 раза больше памяти
Я вижу в коде два представления одного и того же куска из 16 байт, предлагается короткие строки умещающиеся в 16 байт хранить сразу в бэйс аттр?
Все, что вмещается в 16 байт, лучше копировать, чем ссылки/указатели...
Обсуждают сегодня