Библиотека повышения [закрывается]

Вот toggleClass для переключения / добавления / удаления класса в элементе:

// If newState is provided add/remove theClass accordingly, otherwise toggle theClass
function toggleClass(elem, theClass, newState) {
    var matchRegExp = new RegExp('(?:^|\\s)' + theClass + '(?!\\S)', 'g');
    var add=(arguments.length>2 ? newState : (elem.className.match(matchRegExp) == null));

    elem.className=elem.className.replace(matchRegExp, ''); // clear all
    if (add) elem.className += ' ' + theClass;
}

см. jsfiddle

также см. мой ответ здесь для динамического создания нового класса

51
задан Matt Pascoe 29 September 2008 в 15:43
поделиться

12 ответов

Повышение организовано несколькими членами стандартного комитета.
, Таким образом, это - нерестилище для библиотек, которые будут в следующем стандарте.

  1. Это - расширение STL (это заполняет не учтенные биты)
  2. , Это хорошо документируется.
  3. Это является хорошо рецензируемым.
  4. Это имеет высокое действие, таким образом, ошибки найдены и исправлены быстро.
  5. Это независимо от платформы и работает везде.
  6. Это свободно использовать.

С tr1, подходящим скоро, хорошо знать, что повышение уже имеет много покрытой земли. Много библиотек в tr1 в основном адаптировано непосредственно из оригиналов повышения и таким образом было проверено на практике. Различие - то, что они были перемещены в станд.:: пространство имен tr1 (а не повышение).

Все, что необходимо сделать, добавляют, что следующие к значению по умолчанию компиляторов включают путь поиска :

<boost-install-path>/boost/tr1/tr1

Тогда то, когда Вы будете включать стандартное повышение заголовков, автоматически импортирует весь необходимый материал в станд. пространства имен:: tr1

, Например:

Для использования станд.:: tr1:: share_ptr просто необходимо включать < memory>. это даст Вам все интеллектуальные подсказки с одним файлом.

67
ответ дан Ferruccio 7 November 2019 в 19:46
поделиться

Можно просто читать страница Boost Background Information для получения быстрого обзора того, почему необходимо использовать Повышение и для чего можно использовать его. Стоимостью в несколько минут это берет.

17
ответ дан Mihai Limbășan 7 November 2019 в 19:46
поделиться

99%-е портативное устройство.

я сказал бы, что это имеет довольно много библиотек, которые действительно полезны, как только Вы обнаруживаете потребность, которая решена повышением. Или Вы кодируете его сами, или Вы пользуетесь очень солидной библиотекой. Имение от отложить источника для материала как Мультииндекс, Лямбда, Опции Программы, RegEx, SmartPtr и Кортеж удивительно...

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

Достойный!!

15
ответ дан argatxa 7 November 2019 в 19:46
поделиться

Вы получаете много вещей, которые прибывают в C++ 0x. Но кроме той общности, некоторые лучшие специфические особенности являются простым regex библиотека , библиотека кастинга для кастинг от строк до ints (Лексический бросок):

int iResult = 0;
try
{
    iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
    cout << "Unable to cast string to int";
}

А библиотека даты/времени , среди других...

using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday

существует также интерфейс Python (Повышение Python), лексический анализатор/синтаксический анализатор DSL (Дух Повышения):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ('/' >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

и это просто царапает поверхность...

13
ответ дан JakeD 7 November 2019 в 19:46
поделиться

Повышение является большим, но просто игра Адвоката Дьявола вот является некоторыми причинами, почему Вы не можете хотеть использовать Повышение:

  • иногда Делает сбои для компилирования/работания правильно на старых компиляторах.
  • Это часто увеличивает время компиляции больше, чем менее тяжелые шаблоном подходы.
  • Некоторый код Повышения не может сделать то, что Вы думаете, что он делает. Прочитайте документацию!
  • Шаблонное злоупотребление может привести к нечитабельным сообщениям об ошибках.
  • Шаблонное злоупотребление может вести для кодирования трудно для продвижения через в отладчик.
  • Это - новейший C++. Следующая версия Повышения больше не может компилировать на Вашем текущем (более старом) компиляторе.

Все это не означает, что Вы не должны взглянуть на Повышение, кодируют и получают некоторое представление сами, даже если Вы не используете Повышение как есть

13
ответ дан JakeD 7 November 2019 в 19:46
поделиться

Преимущества повышения: это широко доступно, портирует на любой современный компилятор C++ или о любой платформе.
функции являются независимой платформой, Вы не должны изучать дизайн нового потока для каждой новой платформы.
Это инкапсулирует много платформы определенные функции, как файловые системы стандартным способом.

Это - то, с чем должен был поставляться C++! Большая популярность Java была, это поставляется со стандартной библиотекой, чтобы сделать симпатичный очень все, что Вы хотели. C++, к сожалению, только наследовал ограниченные стандартные функции C/Unix.

4
ответ дан Martin Beckett 7 November 2019 в 19:46
поделиться

Все вышеупомянутое, плюс он поощряет много современных методов C++ лучшей практики. Это имеет тенденцию улучшать качество Вашего кода.

3
ответ дан Ferruccio 7 November 2019 в 19:46
поделиться

Повышение является набором библиотек C++. 10 из которых включаются в tr1 C++ 0x.

Вы можете начинать с повышением здесь .

11
ответ дан Brian R. Bondy 7 November 2019 в 19:46
поделиться

shared_ptr и weak_ptr, особенно в многопоточном коде, один стоящий установки повышение. BOOST_STATIC_ASSERT также довольно прохладно для того, чтобы сделать проверку логики времени компиляции.

то, что много классов и утилит в повышении находится в заголовках, означая Вас, может получить большую функциональность, не имея необходимость компилировать что-либо вообще, также плюс. Мобильность обычно не является проблемой, если Вы не используете чрезвычайно старый компилятор. Я когда-то пытался заставить MPL работать с VC6, и это распечатало 40 000 ошибок предупреждений / внутренних ошибок прежде, чем взорваться полностью. Но в целом большая часть библиотеки должна работать независимо от Вашей платформы или поставщика компилятора.

Учитывают то, что довольно много вещей от Повышения уже находятся в TR1 и скорее всего будут в следующем пересмотре библиотеки стандарта C++. Это - довольно большое подтверждение.

4
ответ дан Martin York 7 November 2019 в 19:46
поделиться

Повышение является набором рассмотренных библиотек C++ высококачественного однорангового узла, которые делают акцент на мобильности и правильности. Это действует как defacto открытая демонстрационная площадка для новых дополнений к языку и стандартной библиотеке. Проверьте их веб-сайт для получения дополнительной информации.

6
ответ дан luke 7 November 2019 в 19:46
поделиться

Повышение является очень обширной библиотекой (обычно) универсальных конструкций, которые могут помочь почти в любом приложении. Это может показать то, что много компонентов повышения было включено в C++ 0x спецификации.

Это также портативно, по крайней мере, через основные платформы и должно быть портативно к почти чему-либо с главным образом стандарты совместимый компилятор C++.

единственное предупреждение состоит в том, что может быть много смешанных зависимостей между библиотеками повышения, делая его тяжелее для выбирания просто определенного компонента для распределения (кроме всей библиотеки повышения).

3
ответ дан workmad3 7 November 2019 в 19:46
поделиться

Также обратите внимание, что большая часть повышения является шаблонами, так не требует здания
(просто включают корректные заголовочные файлы).

Несколько частей, которые действительно требуют здания, являются дополнительными:
Они могут каждый быть созданы, независимо таким образом предотвратив ненужное чрезмерное увеличение размера для ненужного кода.

1
ответ дан 7 November 2019 в 19:46
поделиться
Другие вопросы по тегам:

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