Запитання з тегом «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
Чи вводить C ++ 11, 14, 17 або 20 стандартну константу для pi?
Існує досить нерозумна проблема з числом pi в C і C ++. Наскільки я знаю, M_PIвизначений в math.hне вимагається жодним стандартом. Нові стандарти C ++ ввели в складну бібліотеку багато складної математики - гіперболічні функції, std::hermiteа також std::cyl_bessel_iрізні генератори випадкових чисел тощо і так далі. Чи вводив якийсь із "нових" …

8
Захоплення лямбда як посилання на const?
Чи можливо зафіксувати через посилання const в лямбдаському виразі? Я хочу, щоб завдання, позначене нижче, не вдалося, наприклад: #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( …
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 :: вектор :: 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
Як я можу уникнути циклів "for" із умовою "if" всередині них за допомогою C ++?
Практично з усім кодом, який я пишу, я часто стикаюся з проблемами зменшення кількості колекцій, які в кінцевому підсумку закінчуються наївними умовами "якщо" всередині них. Ось простий приклад: 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 Для простоти припустимо, що всі заголовки були написані на …
101 c++  c++11  linker  c++14  abi 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.