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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

3
Способ времени компиляции для определения наименее дорогого типа аргумента
У меня есть шаблон, который выглядит так template <typename T> class Foo { public: Foo(const T& t) : _t(t) {} private: const T _t; }; Есть ли хитрый способ метапрограммирования шаблонов, чтобы избежать использования константной ссылки в тех случаях, когда тип аргумента тривиален, как bool или char? подобно: Foo(stl::smarter_argument<T>::type t) …
15 c++  stl 

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

1
Как компиляторы c ++ находят переменную extern?
Я компилирую эту программу с помощью g ++ и clang ++. Есть разница: g ++ печатает 1, а clang ++ печатает 2. Кажется, что g ++: внешняя переменная определена в самой короткой области видимости. clang ++: внешняя переменная определена в самой короткой глобальной области видимости. Есть ли в C ++ …

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

2
Почему у `std :: basic_ios` есть открытый конструктор?
std::basic_iosимеет открытый конструктор : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); IMO, единственная причина, по которой у класса есть открытый конструктор, - это использование автономного экземпляра этого класса в программе. Если класс существует только для того, чтобы другие классы происходили от него (как, кажется, имеет место basic_ios), все конструкторы класса должны быть protected. …

5
Как иметь переменную const в цикле for для генерации шаблонных классов?
У меня есть код как template <size_t N> class A { template <size_t N> someFunctions() {}; }; Теперь я хочу создать экземпляры класса и вызвать его функции в цикле for для множества значений: // in main() int main() { for (int i = 1; i <= 100; i++) { const …

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

1
В чем разница между старым alloctaor :: construct и новым и явным конструктором?
Как я знаю, std::allocator<T>::constructпринимает только два параметра в более старой версии C ++; первый - указатель на необработанную неструктурированную память, в которой мы хотим создать объект типа, Tа второй - значение типа элемента для инициализации этого объекта. Итак, конструктор копирования вызывается: struct Foo { Foo(int, int) { cout << "Foo(int, …
15 c++  allocator 

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

2
Является ли программа, которая никогда не завершает действительную программу C ++?
Требуется ли прекращение работы программы? Другими словами, это программа, которая всегда работает технически с неопределенным поведением? Обратите внимание, что это не о пустых циклах. Разговор о программах, которые делают "вещи" (то есть наблюдаемое поведение) навсегда. Например, что-то вроде этого: int main() { while (true) { try { get_input(); // calls …

3
Сортировка вектора по убыванию в двух диапазонах
Скажем, у меня есть вектор целых чисел: std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); Затем я сортирую это в порядке убывания: sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); Это производит следующее: 14 13 12 11 10 9 8 …

1
Clang не компилирует код, но gcc и msvc скомпилировали его
Я не понимаю, в чем проблема: в моем коде или в компиляторе (менее возможно). Вот такой кусок кода: #include <iostream> #include <type_traits> #include <set> template<typename T, typename = void> struct TestA: std::false_type {}; template<typename T> struct TestA<T, std::void_t<typename T::reverse_iterator>> : std::true_type {}; template<typename T> struct TestA<T, std::void_t<typename T::dummy_iterator>> : std::true_type …

2
Как вектор как ключ работает внутри C ++?
Этот SO-ответ говорит, что STL Map с вектором для ключа вектора может использоваться в качестве ключа. Поэтому, когда мы используем вектор в качестве ключа. Как это на самом деле работает, так как ключ должен быть уникальным, поэтому, когда мы вставляем другой вектор с такими же элементами, mapпроверка на дублирующийся элемент …
14 c++  arrays  dictionary  vector  stl 

2
Почему std :: swap не помечен как constexpr до C ++ 20?
В C ++ 20 std::swapстановится constexprфункцией. Я знаю, что стандартная библиотека действительно отстала от языка в маркировке вещей constexpr, но к 2017 году <algorithm>была в значительной степени консекстом, как и куча других вещей. Пока - std::swapнет. Я смутно помню, что был какой-то странный дефект языка, который мешал этой маркировке, но …

2
Действительно ли хранилище std :: chrono :: years по крайней мере 17 бит?
Из cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Используя libc++это кажется , подчеркивающее хранение std::chrono::yearsIS , shortкоторый подписанная 16 бит . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Есть ли опечатка на cppreference или что-то …
14 c++  chrono  c++20  libc++ 

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