Запитання з тегом «c++11»

Використовуйте цей тег для коду, який повинен скласти як C ++ 11 (не використовуючи жодних функцій, введених у C ++ 14 або новіших версіях).

5
за допомогою шаблону Extern (C ++ 11)
Рисунок 1: Шаблони функцій TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); Main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } Це правильний спосіб використання extern templateчи я використовую це ключове слово лише …
116 c++  templates  c++11  extern 




3
Яка перевага використання посилань для переадресації в діапазоні для циклів?
const auto&Було б достатньо, якщо я хочу виконувати операції лише для читання. Однак я натрапив на for (auto&& e : v) // v is non-const пару разів останнім часом. Це мене здивує: Можливо чи, що в деяких неясних випадках кутових є деякі бенефіси в використанні посилання переадресації, по порівнянні з …

1
Як би один виклик std :: переслати всі аргументи у різноманітній функції?
Я просто писав загальну фабрику об'єктів і використовував мета-бібліотеку boost-препроцесора для створення варіативного шаблону (використовуючи 2010, і він їх не підтримує). Моя функція використовує посилання на rval і std::forwardробити ідеальну переадресацію, і це змусило мене задуматися ... коли C ++ 0X вийде, і у мене був стандартний компілятор, я б …

2
Чи призначено комітетом зі стандартів C ++ те, що в C ++ 11 unorряд_map знищує те, що він вставляє?
Я щойно втратив три дні свого життя, відслідковуючи дуже дивну помилку, де unordered_map :: insert () знищує змінну, яку ви вставляєте. Ця надзвичайно очевидна поведінка зустрічається лише в останніх компіляторах: я виявив, що кланг 3.2-3.4 та GCC 4.8 - єдині компілятори, які демонструють цю "особливість". Ось зменшений код з моєї …
114 c++  gcc  c++11  clang  standards 

9
Який найкращий спосіб перебрати два або більше контейнерів одночасно
C ++ 11 пропонує безліч способів ітерації над контейнерами. Наприклад: Петля на основі діапазону for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Однак який спосіб рекомендується перебирати над двома (або більше) контейнерами однакового розміру, щоб виконати щось на кшталт: for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] …


6
Чому ми можемо використовувати `std :: move` на об’єкті` const`?
В C ++ 11 ми можемо написати цей код: struct Cat { Cat(){} }; const Cat cat; std::move(cat); //this is valid in C++11 коли я дзвоню std::move, це означає, що я хочу перемістити об'єкт, тобто я зміню об'єкт. Рухати constоб’єкт нерозумно, тож чому б std::moveне обмежувати цю поведінку? Це буде …
113 c++  c++11 

4
Чи cout синхронізовано / безпечно для потоків?
Взагалі я припускаю, що потоки не синхронізовані, користувач повинен зробити відповідне блокування. Однак, чи є такі речі, як coutспеціальна обробка в стандартній бібліотеці? Тобто, якщо записується декілька потоків, чи coutможуть вони пошкодити coutоб'єкт? Я розумію, що навіть при синхронізації ви все одно отримаєте випадковий переплетений вихід, але це перемежування гарантоване. …
112 c++  gcc  c++11 

20
Як можна повторити елементи std :: tuple?
Як я можу повторити кортеж (за допомогою C ++ 11)? Я спробував таке: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); але це не працює: Помилка 1: вибачте, не виконане: не можна розширити "Слухач ..." у список аргументів фіксованої довжини. Помилка 2: я не можу відображатися в постійному виразі. Отже, як я правильно …

8
Як швидко, переносно та ретельно висіяти PRNG mt19937?
Здається, я бачу багато відповідей, в яких хтось пропонує використовувати <random>для генерації випадкових чисел, як правило, поряд з таким кодом: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Зазвичай це замінює якусь "нечесну гидоту", таку як: srand(time(NULL)); rand()%6; Ми можемо розкритикувати старий спосіб, стверджуючи, що time(NULL)забезпечує низьку ентропію, time(NULL)передбачувано, а …
112 c++  c++11  random 


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

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