C++ · Avançado · Inglês · Técnico
small string optimization
Otimização das implementações de std::string que guarda textos curtos dentro do próprio objeto, sem alocar no heap. O limite varia entre implementações, em geral 15 ou 22 caracteres.
Onde usar
Explica por que strings curtas são rápidas e por que sizeof(std::string) é 32 bytes na libstdc++ e 24 na libc++. Em desempenho, influencia mover ou copiar strings.
Em código
std::string a = "curta"; // buffer interno
std::string b(40, 'x'); // heap
std::cout << sizeof(std::string); // 32
std::cout << a.capacity(); // 15 no GCCExemplos
Short names fit in small string optimization, no allocation.
Nomes curtos cabem na small string optimization, sem alocação.
That string is 40 chars, so it exceeds the small buffer.
Essa string tem 40 caracteres, então estoura o buffer pequeno.
Cuidado
Não é exigida pelo padrão e o limite muda por implementação; não conte com ela, e lembre que mover uma string curta copia os bytes.
Sinônimos
SSO