Вопросы с тегом «c++14»

C ++ 14 - это название стандарта C ++, утвержденного в 2014 году. Он основан на предыдущем стандарте C ++ 11, улучшая основной язык и стандартную библиотеку, а также добавляя некоторые функции.

2
Как реализовать классические алгоритмы сортировки в современном C ++?
std::sortАлгоритм (и его кузены std::partial_sortи std::nth_element) из стандартной библиотеки C ++ в большинстве реализаций сложный и гибридная объединение более элементарных алгоритмов сортировки , таких как выбор сортировки, вставки сортировка, быстрая сортировка, сортировка слиянием, или кучи сортировки. Здесь и на родственных сайтах, таких как https://codereview.stackexchange.com/, есть много вопросов, связанных с ошибками, …

2
Может ли современный C ++ получить производительность бесплатно?
Иногда утверждают, что C ++ 11/14 может повысить производительность даже при простой компиляции кода C ++ 98. Обоснование обычно происходит в соответствии с семантикой перемещения, поскольку в некоторых случаях конструкторы rvalue генерируются автоматически или теперь являются частью STL. Теперь мне интересно, были ли эти случаи ранее уже обрабатывались RVO или …

6
С ++ 11, 14, 17 или 20 вводит стандартную константу для пи?
Существует довольно глупая проблема с числом пи в C и C ++. Насколько я знаю, M_PIопределено в math.hне требуется ни одного стандарта. Новые стандарты C ++ ввел много сложных математических в стандартной библиотеке - гиперболических функций, std::hermiteи std::cyl_bessel_i, различных генераторов случайных чисел и так далее , и так далее. Приносил …

8
Лямбда-захват как постоянная ссылка?
Можно ли захватить константной ссылкой в ​​лямбда-выражении? Я хочу, чтобы назначение, отмеченное ниже, не сработало, например: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], …
166 c++  c++11  lambda  c++14 

2
Каковы некоторые виды использования decltype (auto)?
На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (авто) В c ++ 14 decltype(auto)введена идиома. Обычно его используют для того, чтобы autoобъявления могли использовать decltypeправила для данного выражения . В поисках примеров «хорошего» использования идиомы я могу думать только о таких вещах, как ( Скотт …

2
Как работает `void_t`
Я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов ( часть I , часть II ), где он представил свою void_tтехнику SFINAE. Пример: дан простой шаблон переменной, который оценивает, правильно voidли сформированы все аргументы шаблона: template< class ... > using void_t = void; и следующая черта, которая проверяет …
149 c++  templates  c++14  sfinae 

7
Когда следует использовать автоматическое определение типа возвращаемого значения C ++ 14?
С выпущенным GCC 4.8.0 у нас есть компилятор, который поддерживает автоматическое определение типа возвращаемого значения, часть C ++ 14. С помощью -std=c++1yя могу сделать это: auto foo() { //deduced to be int return 5; } Мой вопрос: когда мне следует использовать эту функцию? Когда это необходимо и когда это делает …

2
Является ли #pragma когда-то частью стандарта C ++ 11?
Традиционно стандартным и переносимым способом избежать включения нескольких заголовков в C ++ было использование #ifndef - #define - #endifсхемы директив предварительного компилятора, также называемой схемой защиты от макросов (см. Фрагмент кода ниже). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... #endif Однако в большинстве реализаций / компиляторов (см. Рисунок ниже) существует более «элегантная» …

1
Копирование / перемещение назначения в std :: vector :: erase () и std :: deque :: erase ()
В процессе ответа на другой вопрос я наткнулся на несколько иные формулировки для std::vector::erase()и std::deque::erase(). Вот что говорит C ++ 14 std::deque::erase( [deque.modifiers]/4-6выделение мое): Эффекты: ... Сложность: Количество вызовов к деструктору такое же, как и количество стертых элементов, но количество вызовов к оператору присваивания не более, чем меньшее количество элементов …


3
Как общая лямбда работает в C ++ 14?
Как работает универсальная лямбда ( autoключевое слово как тип аргумента) в стандарте C ++ 14? Основан ли он на шаблонах C ++, где для каждого другого типа аргумента компилятор генерирует новую функцию с тем же телом, но замененными типами (полиморфизм во время компиляции), или он больше похож на дженерики Java …
114 c++  lambda  auto  c++14 

13
Как с помощью C ++ избежать циклов for с условием «if» внутри них?
Почти со всем кодом, который я пишу, я часто сталкиваюсь с проблемами сокращения наборов в коллекциях, которые в конечном итоге заканчиваются наивными условиями «если» внутри них. Вот простой пример: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } С функциональными языками я могу решить проблему, уменьшив …
111 c++  c++11  c++14 

4
Что такое прозрачные компараторы?
В C ++ 14 ассоциативные контейнеры, похоже, изменились с C ++ 11 - [associative.reqmts] / 13 говорит: Шаблоны функций - членов find, count, lower_bound, upper_bound, и equal_rangeне должен участвовать в разрешении перегрузки , если тип Compare::is_transparentне существует. Какова цель сделать компаратор «прозрачным»? C ++ 14 также предоставляет такие шаблоны библиотек: …
106 c++  c++14  c++-faq 

3
Добавляет ли C ++ 14 новые ключевые слова в C ++?
Комитет по стандартам C ++ имеет тенденцию уклоняться от добавления новых ключевых слов в язык, однако с C ++ 11 этого не произошло. Некоторые примеры: constexpr decltype thread_local auto // New usage noexcept nullptr static_assert alignof alignas Есть ли в C ++ 14 новые ключевые слова?
103 c++  c++11  keyword  c++14 

3
Безопасно ли связывать объекты C ++ 17, C ++ 14 и C ++ 11
Предположим, у меня есть три скомпилированных объекта, созданных одним и тем же компилятором / версией : A был скомпилирован со стандартом C ++ 11 B был скомпилирован по стандарту C ++ 14 C был скомпилирован со стандартом C ++ 17 Для простоты предположим, что все заголовки были написаны на C …
103 c++  c++11  linker  c++14  abi 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.