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

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

7
Чи є "нові" та "видалити" застарілі в C ++?
Я натрапив на вікторину, яка включала оголошення масиву різних розмірів. Перше, що мені прийшло в голову, це те, що мені потрібно використовувати динамічний розподіл з newкомандою, як це: while(T--) { int N; cin >> N; int *array = new int[N]; // Do something with 'array' delete[] array; } Однак я …

3
Програма багатопотокової роботи застрягла в оптимізованому режимі, але працює нормально в -00
Я написав прості багатопотокові програми так: static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } Він поводиться нормально в режимі налагодження у Visual studio або -O0в gc …

2
Як працює цей шаблон коду, щоб отримати розмір масиву?
Цікаво, чому такий код може отримати розмір тестового масиву? Я не знайома з граматикою в шаблоні. Можливо, хтось міг би пояснити значення коду під template<typename,size_t>. Крім того, посилання на посилання також є кращим. #define dimof(array) (sizeof(DimofSizeHelper(array))) template <typename T, size_t N> char(&DimofSizeHelper(T(&array)[N]))[N]; void InitDynCalls() { char test[20]; size_t n = …
61 c++  visual-c++ 

10
Підписане переповнення C ++ та невизначена поведінка (UB)
Мені цікаво про використання коду, як описано нижче int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Якщо цикл повторюється в nрази, то factorвін множиться на 10точно nрази. Однак factorвикористовується лише коли-небудь, помноживши їх 10на загальну кількість n-1разів. Якщо …

5
Як отримати адресу функції C ++ лямбда у самій лямбда?
Я намагаюся розібратися, як отримати адресу лямбда-функції всередині себе. Ось зразок коду: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, що я можу зафіксувати лямбда в змінній і надрукувати адресу, але хочу зробити це на місці, коли виконується ця анонімна функція. …
53 c++  c++11  lambda  c++14  c++17 

3
Оператор рівності не визначається для реалізації спеціального оператора космічного корабля в C ++ 20
Я стикаюся з дивною поведінкою з новим оператором космічного корабля <=>в C ++ 20. Я використовую компілятор Visual Studio 2019 /std:c++latest. Цей код складається добре, як і очікувалося: #include <compare> struct X { int Dummy = 0; auto operator<=>(const X&) const = default; // Default implementation }; int main() { …

3
Ініціалізуйте кілька членів постійного класу, використовуючи одну виклик функції C ++
Якщо у мене є дві різні змінні постійних членів, які обидві потрібно ініціалізувати на основі одного і того ж виклику функції, чи є спосіб зробити це без виклику функції двічі? Наприклад, клас дробу, де чисельник і знаменник є постійними. int gcd(int a, int b); // Greatest Common Divisor class Fraction …

5
Друкований рядок шаблону до числового в C ++
У стандартній бібліотеці C ++ є функції для перетворення з рядкових в числові типи: stoi stol stoll stoul stoull stof stod stold але мені здається нудним використовувати їх у коді шаблону. Чому немає функцій шаблону на кшталт: template<typename T> T sto(...) конвертувати рядки в числові типи? Я не бачу жодної …

2
Чому "використовується система;" не вважається поганою практикою?
У мене є C ++ фон, і я повністю розумію і погоджуюся з відповідями на це питання: Чому "використовується простір імен std;" вважається поганою практикою? Тож я здивований, що, маючи певний досвід роботи з C # зараз, я бачу саме навпаки: using Some.Namespace;буквально використовується скрізь. Щоразу, коли ви починаєте використовувати …

2
Алгоритм пошуку рішення для A xor X = B + X
Давши цілі числа A і B, знайдіть ціле число X так, щоб: А, В <2 * 1е18 A xor X = B + X Я дуже сумніваюся, що можна вирішити це рівняння за допомогою математики. Це проблема кодування, з якою я стикався 3 роки тому і навіть зараз не можу …
46 c++  xor 

3
std :: vector (ab) використовує автоматичне зберігання
Розглянемо наступний фрагмент: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Очевидно, що це може вийти з ладу на більшості платформ, оскільки розмір стека за замовчуванням зазвичай менше 20 Мб. Тепер розглянемо наступний код: #include <array> #include <vector> int main() { using huge_type = std::array<char, …

3
Як я можу отримати глибину багатовимірного std :: вектора під час компіляції?
У мене є функція, яка займає багатовимірність std::vectorі вимагає передавати глибину (або кількість розмірів) як параметр шаблону. Замість жорсткого кодування цього значення я хотів би написати constexprфункцію, яка буде приймати std::vectorі повертати глибину як unsigned integerзначення. Наприклад: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, …

2
Чому оператор! = Видаляється в C ++ 20 для багатьох стандартних типів бібліотек?
Згідно cppreference , std::type_info::operator!=видалення з C ++ 20, однак, std::type_info::operator==мабуть, залишається. Які міркування? Я можу погодитись, щоб порівняння для нерівності було безглуздим, але тоді порівняння для рівності було б так само безглуздим, чи не так? Аналогічно, operator!=з багатьох інших стандартних типів бібліотек, включаючи контейнери, такі як std::unordered_map::operator!=та std::unordered_set::operator!=будуть видалені в …

5
Чи можна запобігти пропущенню сукупності членів ініціалізації?
У мене є структура з багатьма членами одного типу, як це struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; Проблема полягає в тому, що якщо я забуду ініціалізувати одного з членів структури (наприклад wasactive), наприклад: VariablePointers{activePtr, filename} Компілятор не буде скаржитися на це, але у мене буде один …


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