маленькая строковая оптимизация для вектора?

Существует несколько способов достижения этого

Использовать медиа-запрос, но для этого требуются размеры шрифта для нескольких точек останова

body
{
       font-size: 22px; 
}
h1
{
       font-size:44px;
}

@media (min-width: 768)
{
       body
       {
           font-size: 17px; 
       }
       h1
       {
           font-size:24px;
       }
}

Использовать измерения в% или em. Просто измените размер базового шрифта, все изменится. В отличие от предыдущего, вы можете просто изменить шрифт тела, а не h1 каждый раз, или позволить размер базового шрифта по умолчанию устройства и оставить все в em

  1. «Ems» (em): «em» является масштабируемой единицей. Значение em равно текущему размеру шрифта, например, если размер шрифта документа равен 12pt, 1em равен 12pt. Ems являются масштабируемыми по своей природе, поэтому 2em будет равен 24pt, .5em будет равен 6pt и т. Д.
  2. Percent (%): единица процента похожа на блок «em», за исключением нескольких основных различия. Прежде всего, текущий размер шрифта равен 100% (т. Е. 12pt = 100%). При использовании процентной единицы ваш текст остается полностью масштабируемым для мобильных устройств и для доступности.

см. kyleschaeffer.com /....

CSS3 поддерживает новые измерения, которые относятся к виду порта. Но это не работает в android

  1. 3.2vw = 3,2% от ширины окна просмотра
  2. 3.2vh = 3.2% высоты окна просмотра
  3. 3.2vmin = Меньше 3.2vw или 3.2vh
  4. 3.2vmax = Больше 3.2vw или 3.2vh
    body
    {
        font-size: 3.2vw;
    }
    

см. css-tricks.com /...., а также посмотреть caniuse.com /....

26
задан BuschnicK 1 February 2010 в 16:32
поделиться

4 ответа

Вы можете одолжить Multvector внедрение от LLVM. (только заголовок, расположенный в LLVM \ включает \ llvm \ adt)

16
ответ дан 28 November 2019 в 07:27
поделиться

Boost 1.58 был только что выпущен, и его библиотека Container имеет класс small_vector , основанный на LLVM SmallVector.

Существует также static_vector, который не может вырасти выше первоначально заданного размера. Оба контейнера предназначены только для заголовков.

В библиотеке Facebook folly также есть несколько потрясающих контейнеров.

Он имеет small_vector , который может быть настроен с параметром шаблона, чтобы действовать как векторы static или small повышения. Он также может быть сконфигурирован для использования маленьких целочисленных типов для ведения бухгалтерского учета внутреннего размера, что, учитывая, что они являются facebook, неудивительно:)

Ведется работа по созданию межплатформенной библиотеки, поэтому поддержка Windows / MSVC должна быть когда-нибудь ...

21
ответ дан onqtam 28 November 2019 в 07:27
поделиться

Это было обсуждалось лет назад (и некоторые имена в этом потоке могут показаться немного знакомыми :-)), но я не знаю о существующей реализации. Я не думаю, что я бы попытался адаптировать std :: string к задаче. Точные требования к типу, по которым std :: basic_string не очень хорошо сформулированы, но стандарт довольно ясен, что он предназначен только для чего-то, что во многом похоже на char. Для типов, которые существенно различаются, это может все еще работать, но трудно сказать, что произойдет - это никогда не предназначалось и, вероятно, не было проверено со многими типами, кроме маленьких целых чисел.

Когда вы приступите к этому, реализация std::vector с нуля (даже с небольшой векторной оптимизацией) не будет ужасно сложной.

1
ответ дан Jerry Coffin 28 November 2019 в 07:27
поделиться

Если T является типом POD, почему бы не использовать basic_string вместо vector ??

2
ответ дан 28 November 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: