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

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.

1
Чому констатаційна функція дозволяє визначати не визначену поведінку?
В C ++ існує дуже акуратна властивість константних виразів: їх оцінка не може мати визначеної поведінки ( 7.7.4.7 ): Вираз e - основний постійний вираз, якщо тільки оцінка e, дотримуючись правил абстрактної машини ([intro.execution]), не оцінила б одне з наступних: ... операція, яка мала б не визначену поведінку, як зазначено …

3
Чому деструктор не викликається оператором видалення?
Я намагався закликати ::deleteдо класу в operator deleteцьому. Але деструктор не викликається. Я визначив клас MyClass, operator deleteперевантажений яким. Глобальний operator deleteтакож перевантажений. Перевантажений operator deleteз MyClassвикликатиме перевантажений глобальної operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual ~MyClass() { printf("Destroying MyClass...\n"); } void* operator new(size_t size) …

9
Catalina C ++: Використання заголовків <cmath> приводить до помилки: у глобальному просторі імен жоден член не названий "signbit"
Після оновлення до Каталіни з Mojave, Налаштування: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk in env. Я не можу скласти програму, яка використовує &lt;cmath&gt;заголовок. Я спробував змінити CFLAGS, CCFLAGS, CXXFLAGS, щоб вказати на MacOSSDK Location, які нічого не змінюють Scanning dependencies of target OgreMain /Applications/Xcode.app/Contents/Developer/usr/bin/make -f OgreMain/CMakeFiles/OgreMain.dir/build.make OgreMain/CMakeFiles/OgreMain.dir/build [ 0%] Building CXX object OgreMain/CMakeFiles/OgreMain.dir/src/OgreASTCCodec.cpp.o cd /Users/roman/Downloads/ogre-1.12.2/build/OgreMain …

5
Як створити перестановку в c ++ за допомогою STL для кількості місць, менших від загальної довжини
У мене є c++ vectorз std::pair&lt;unsigned long, unsigned long&gt;об'єктами. Я намагаюся генерувати перестановки об'єктів вектора за допомогою std::next_permutation(). Однак я хочу, щоб перестановки були заданого розміру, як ви знаєте, аналогічно permutationsфункції в python, де вказано розмір очікуваної повернутої перестановки. В основному, c++еквівалент import itertools list = [1,2,3,4,5,6,7] for permutation in …

2
Як передати посилання на аргумент типу шаблону
Чи є спосіб передати посилання як аргумент на аргумент типу імені шаблону? Я маю на увазі так, замість передачі int, наприклад, для передачі посилання на int. template &lt;typename T&gt; struct Foo { Foo(T arg) : ptr(arg) {} T ptr; }; int main() { int* a = new int(6); Foo&lt;decltype(a)&gt; foo1(a); …
15 c++  templates 

4
Переконайтесь, що час компіляції викликається саме в одному місці
Мені цікаво, чи можна за час компіляції забезпечити виклик методу саме в одному місці. Зауважте, що це нормально, якщо функція викликається декілька разів (наприклад, у циклі) - але вона не повинна викликатися у двох окремих циклах. Це можна розбити на дві частини, мене також цікавлять рішення, які охоплюють будь-яку частину: …
15 c++ 

3
Час компіляції для визначення найменш дорогого типу аргументу
У мене є шаблон, який виглядає приблизно так template &lt;typename T&gt; class Foo { public: Foo(const T&amp; t) : _t(t) {} private: const T _t; }; Чи є розумна метапрограмування шаблону, щоб уникнути використання посилання const у випадках, коли тип аргументу тривіальний, як bool або char? подібно до: Foo(stl::smarter_argument&lt;T&gt;::type t) …
15 c++  stl 

4
Викрадено ресурси з ключів std :: карта дозволено?
Чи добре в C ++ вкрасти ресурси з карти, яка мені вже не потрібна? Точніше, припустимо , що у мене є std::mapз std::stringключами , і я хочу , щоб побудувати вектор з нього шляхом крадіжки ресурсів mapи ключів з використанням std::move. Зауважте, що такий запис запису до клавіш пошкоджує внутрішню …

5
Порахувати рядки вихідного файлу за допомогою макросів?
Чи можливо за допомогою препроцесора C / C ++ порахувати рядки у вихідному файлі або в макрос, або в якесь значення, доступне для компіляції? Наприклад, чи можу я замінити MAGIC1, MAGIC2і MAGIC3в наступному, і отримати значення 4 якось під час використання MAGIC3? MAGIC1 // can be placed wherever you like …

1
Як компілятори c ++ знаходять зовнішню змінну?
Я складаю цю програму за допомогою g ++ та clang ++. Є різниця: g ++ друкує 1, але clang ++ друкує 2. Здається, що g ++: зовнішня змінна визначається в найкоротшій області. clang ++: зовнішня змінна визначається в найкоротшій глобальній області. Чи має специфікація C ++ якусь специфікацію щодо цього? …

2
Чому `std :: basic_ios` має публічний конструктор?
std::basic_iosмає публічний конструктор : explicit basic_ios (std::basic_streambuf&lt;CharT,Traits&gt;* sb); IMO, єдиною причиною для класу мати загальнодоступний конструктор - використовувати окремий екземпляр цього класу в програмі. Якщо клас існує лише для того, щоб з нього сходили інші класи (як це здається basic_ios), всі конструктори класу повинні бути protected. Усі конструктори std::ios_baseзахищені. Але …

2
Потоки C ++ за допомогою об’єкта функції, як називаються кілька деструкторів, але не конструктори?
Знайдіть фрагмент коду нижче: class tFunc{ int x; public: tFunc(){ cout&lt;&lt;"Constructed : "&lt;&lt;this&lt;&lt;endl; x = 1; } ~tFunc(){ cout&lt;&lt;"Destroyed : "&lt;&lt;this&lt;&lt;endl; } void operator()(){ x += 10; cout&lt;&lt;"Thread running at : "&lt;&lt;x&lt;&lt;endl; } int getX(){ return x; } }; int main() { tFunc t; thread t1(t); if(t1.joinable()) { cout&lt;&lt;"Thread is …

5
Як мати змінну const у циклі for для створення шаблонів класів?
Я маю подібний код template &lt;size_t N&gt; class A { template &lt;size_t N&gt; someFunctions() {}; }; Тепер я хочу створити екземпляри класу та викликати функції в ньому у циклі for для безлічі значень типу // in main() int main() { for (int i = 1; i &lt;= 100; i++) { …

3
Дано ціле число N. Яке найменше ціле число більше N, яке має лише 0 або 1 як його цифри?
У мене є ціле число N. Я повинен знайти найменше ціле число більше N, яке не містить жодної цифри, крім 0 або 1. Наприклад: Якщо N = 12тоді відповідь 100. Я застосував підхід на грубі сили в C ++. int main() { long long n; cin &gt;&gt; n; for (long …
15 c++  algorithm 

1
Яка різниця між старшим aloctaor :: конструктом та новим та явним конструктором?
Як я знаю, std::allocator&lt;T&gt;::constructу старій версії C ++ приймаються лише два параметри; перший - вказівник на сиру, небудовану пам'ять, в якій ми хочемо побудувати об'єкт типу, Tа другий - значення типу елемента для ініціалізації цього об’єкта. Отже, викликається конструктор копій: struct Foo { Foo(int, int) { cout &lt;&lt; "Foo(int, int)" …
15 c++  allocator 

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