c++- все статьи тега ➜ страница 19
Как использовать перечисления в C++
предположим, что у нас есть enum следующим образом: enum Days {Saturday, Sunday, Tuesday,Wednesday, Thursday, Friday}; Я хочу создать экземпляр этого enum и инициализировать его с правильным значением, так что я делаю: Days day = Days.Saturday; теперь я хочу проверить мою переменную или экземпляр с существующим enum значение, поэтому я делаю: if (day == Days.Saturday) { std::cout<<"Ok its Saturday"; } это дает мне ошибку компиляции: ошибка: ожидается первичное-выражение до ...
Существует ли максимальный предел длины массива в C++?
есть ли максимальная длина для массива в C++? Это предел C++ или это зависит от моей машины? Это можно настроить? Зависит ли это от типа массива? могу ли я каким-то образом нарушить этот предел или мне нужно искать лучший способ хранения информации? А какой должен быть самый простой способ? то, что мне нужно сделать, это хранить long long int в массиве, я работаю в среде Linux. Мой вопрос: что мне делать, если мне нужно хранить массив из N длинных целых чисел с N > 10 цифр? Мне это нужно, ...
Когда полезны макросы C++? [закрытый]
The C препроцессор справедливо боится и избегает сообщества C++. Встроенные функции, запоры и шаблоны обычно являются более безопасной и превосходной альтернативой a #define. следующий макрос: #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) никоим образом не превосходит тип сейфа: inline bool succeeded(int hr) { return hr >= 0; } но макросы имеют свое место, пожалуйста, перечислите использование вы найдете для макросов, которые вы не могу обойтись без препроцессора. пожалуйста помес ...
Убедительные примеры пользовательских распределителей C++?
какие действительно веские причины бросить std::allocator в пользу нестандартного решения? Вы сталкивались с какими-либо ситуациями, когда это было абсолютно необходимо для корректности, производительности, масштабируемости и т. д.? Есть действительно умные примеры? пользовательские распределители всегда были особенностью стандартной библиотеки, в которой у меня не было большой необходимости. Мне просто интересно, может ли кто-нибудь здесь на SO предоставить некоторые убедительные примеры, чтоб ...
Почему библиотеки и фреймворки C++ никогда не используют интеллектуальные указатели?
Я читал в нескольких статьях, что сырые указатели следует почти никогда не используется. Вместо этого они всегда должны быть завернуты в интеллектуальные указатели, будь то указатели с областью действия или общие указатели. однако я заметил, что такие фреймворки, как Qt, wxWidgets и библиотеки, такие как Boost, никогда не возвращаются и не ожидают интеллектуальных указателей, как будто они их вообще не используют. Вместо этого они возвращают или ожидают необработанные указатели. Есть ли для это ...
Когда процесс получает SIGABRT (сигнал 6)?
каковы сценарии, в которых процесс получает SIGABRT в C++? Всегда ли этот сигнал поступает из процесса или может быть передан от одного процесса к другому? есть ли способ определить, какой процесс посылает этот сигнал? ...
Как правильно добавить каталоги include с помощью CMake
около года назад я спросил о зависимостях заголовков в CMake. недавно я понял, что проблема, похоже, заключалась в том, что CMake считал эти заголовочные файлы внешний в проект. По крайней мере, при создании проекта Code::Blocks заголовочные файлы не отображаются в проекте (исходные файлы). Поэтому мне кажется, что CMake считает эти заголовки внешний к проекту, и не отслеживает их в зависит. быстрый поиск в учебнике CMake только указал на include_directories который, кажется, не делает то, что ...
mmap () против блоков чтения
Я работаю над программой, которая будет обрабатывать файлы, которые потенциально могут быть размером 100 ГБ или более. Файлы содержат наборы записей переменной длины. У меня есть первая реализация, и теперь я смотрю на повышение производительности, особенно на более эффективное выполнение ввода-вывода, так как входной файл сканируется много раз. есть ли эмпирическое правило для использования mmap() против чтения в блоках через C++ ' S fstream библиотеки? То, что я хотел бы сделать, это прочитат ...
Как использовать перечисления в качестве флагов в C++?
лечения enumS Как флаги прекрасно работает в C# через [Flags] атрибут, но каков наилучший способ сделать это в C++? например, я хотел бы написать: enum AnimalFlags { HasClaws = 1, CanFly =2, EatsFish = 4, Endangered = 8 }; seahawk.flags = CanFly | EatsFish | Endangered; однако, я получаю ошибки компилятора относительно int/enum преобразования. Есть ли лучший способ выразить это, чем просто тупой кастинг? Предпочтительно, я не хочу полагаться на конструкции из сторонних биб ...
Как включить (буквально) все предупреждения GCC?
Я хотел бы включить -- буквально -- все из предупреждений, которые есть у GCC. (Вы думаете, что это будет легко...) думаешь -Wall может сделать трюк, но нет! Еще нужно -Wextra. думаешь -Wextra может сделать трюк, но нет! Не все из перечисленных предупреждений здесь (например, -Wshadow) включены этим. И я до сих пор не знаю, если этот список всесторонний. как я могу сказать GCC включить (нет, если, и, или но!)все предупреждения у него есть? ...
Стек, статика и куча в C++
Я искал, но я не очень хорошо понял эти три понятия. Когда я должен использовать динамическое распределение (в куче) и в чем его реальное преимущество? Каковы проблемы статики и стека? Могу ли я написать целое приложение без выделения переменных в куче? Я слышал, что другие языки включают в себя" сборщик мусора", так что вам не придется беспокоиться о памяти. Что делает сборщик мусора? что вы могли бы сделать манипулирование памятью самостоятельно, что вы не могли сделать с помощью этого ...
Ошибка c++: неопределенная ссылка на 'часы, методов gettime и settime часы'
Я довольно новичок в Ubuntu, но я не могу заставить это работать. Он отлично работает на моих школьных компьютерах, и я не знаю, что я не делаю. Я проверил usr / include и времени.ч там просто отлично. Вот код: #include <iostream> #include <time.h> using namespace std; int main() { timespec time1, time2; int temp; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1); //do stuff here clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2); return 0; } Я испо ...
Что на самом деле-это очереди в STL?
Я смотрел на контейнеры STL и пытался понять, что они на самом деле (т. е. используемая структура данных), а deque остановил меня: сначала я подумал, что это двойной связанный список, который позволит вставлять и удалять с обоих концов в постоянное время, но меня беспокоит обещание С помощью оператора [] должно быть сделано в постоянное время. В связанном списке произвольный доступ должен быть O (n), верно? и если это динамический массив, как может это добавить элементы в постоянное время? Сле ...
Преимущества СТД::для каждого сверх для петли
есть ли какие-либо преимущества std::for_each over for петли? Ко мне,std::for_each только кажется, что мешает читабельности кода. Почему же тогда некоторые стандарты кодирования рекомендуют его использование? ...
Оптимизация a "while(1);" в C++0x
обновление, см. ниже! Я слышал и читал, что C++0x позволяет компилятору печатать "Hello" для следующего фрагмента #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } это, по-видимому, имеет какое-то отношение к потокам и возможностям оптимизации. Мне кажется, что это может удивить многих людей. есть ли у кого-то хорошее объяснение, почему это было необходимо разрешить? Для справки, самый последний проект C++0x говорит в 6.5/5 цик ...
Что означает "#pragma comment"?
Что значит #pragma comment значит в следующий? #pragma comment(lib, "kernel32") #pragma comment(lib, "user32") ...
Почему я не могу переслать-объявить класс в пространстве имен с помощью двойных двоеточий?
class Namespace::Class; почему я должен это делать?: namespace Namespace { class Class; } используя VC++ 8.0, компилятор выдает: ошибка C2653: 'Namespace': это не имя класса или пространства имен Я предполагаю, что проблема здесь в том, что компилятор не может сказать, является ли Namespace это класс или пространство имен? Но почему это имеет значение, так как это просто прямая декларация? есть ли другой способ переадресации-объявить класс, определенный в некотором пространстве ...
Почему (a % 256) отличается от (A & 0xFF)?
Я всегда предполагал, что при выполнении (a % 256) оптимизатор, естественно, будет использовать эффективную побитовую операцию, как если бы я написал (a & 0xFF). при тестировании на компиляторе explorer gcc-6.2 (- O3): // Type your code here, or load an example. int mod(int num) { return num % 256; } mod(int): mov edx, edi sar edx, 31 shr edx, 24 lea eax, [rdi+rdx] movzx eax, al sub eax, edx ret и при попытке другого кода: // Type y ...
определение "условный переход или перемещение зависит от неинициализированных значений" valgrind сообщение
Итак, я получаю какое-то таинственное неинициализированное сообщение Valgrind, и это было довольно загадочно, откуда взялось плохое значение. кажется, что valgrind показывает место, где используется unitialized значение, но не происхождение неинициализированного значения. ==11366== Conditional jump or move depends on uninitialised value(s) ==11366== at 0x43CAE4F: __printf_fp (in /lib/tls/i686/cmov/libc-2.7.so) ==11366== by 0x43C6563: vfprintf (in /lib/tls/i686/cmov/libc-2.7.so) ==11366== ...
C++ valarray против вектора
Мне очень нравятся векторы. Они ловкие и быстрые. Но я знаю, что такая вещь существует valarray. Почему я должен использовать valarray вместо вектора? Я знаю, что у valarrays есть некоторый синтаксический сахар, но кроме этого, когда они полезны? ...