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

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

6
Зачем использовать std :: make_unique в C ++ 17?
Насколько я понимаю, C ++ 14 был введен, std::make_uniqueпотому что из-за того, что порядок оценки параметров не был указан, это было небезопасно: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Объяснение: если оценка сначала выделяет память для необработанного указателя, затем вызывает g()и исключение перед std::unique_ptrпостроением, тогда происходит утечка памяти.) Вызов std::make_uniqueбыл способом …
96 c++  c++17  unique-ptr 

13
Как рассчитать разницу во времени в C ++
Как лучше всего рассчитать разницу во времени в C ++? Я измеряю скорость выполнения программы, поэтому меня интересуют миллисекунды. А еще лучше, секунды. Миллисекунды .. Принятый ответ работает, но должен включать ctime или time.h, как указано в комментариях.
96 c++ 

16
Лучшие практики для операций кругового сдвига (поворота) в C ++
Операторы сдвига влево и вправо (<< и >>) уже доступны в C ++. Однако я не мог понять, как я могу выполнять операции кругового сдвига или поворота. Как можно выполнять такие операции, как «Повернуть влево» и «Повернуть вправо»? Здесь дважды вращается вправо Initial --> 1000 0011 0100 0010 должен привести …

2
Использует malloc для поведения int undefined до C ++ 20
Мне сказали, что следующий код имеет неопределенное поведение до C ++ 20: int *p = (int*)malloc(sizeof(int)); *p = 10; Это правда? Аргументом было то, что время жизни intобъекта не начинается до присвоения ему значения ( P0593R6 ). Для устранения проблемы newследует использовать размещение: int *p = (int*)malloc(sizeof(int)); new (p) int; …


6
Оператор тильды в C
Я видел оператор тильды, используемый в алгоритме хеширования ELF, и мне любопытно, что он делает. (Код взят из Eternal Confused .) unsigned elf_hash ( void *key, int len ) { unsigned char *p = key; unsigned h = 0, g; int i; for ( i = 0; i < len; …
96 c++  c  operators 


3
Что такое «топор памяти»?
Я только что наткнулся на это сообщение в блоге, в котором упоминается «топание памяти»: программа на C ++, которая легко может топтать память (о чем вы, вероятно, даже не слышали, если родились в мире управляемого кода). И вообще никогда не слышал об этом! Итак, что это, топчание памяти, топчание памяти? …

7
M_PI работает с math.h, но не с cmath в Visual Studio
Я использую Visual Studio 2010. Я читал, что на C ++ лучше использовать <cmath>, чем <math.h>. Но в программе, которую я пытаюсь написать (консольное приложение Win32, пустой проект), я пишу: #define _USE_MATH_DEFINES #include <math.h> он компилируется, а если я напишу #define _USE_MATH_DEFINES #include <cmath> это не с ошибка C2065: 'M_PI': …

12
C ++ Tuple против Struct
Есть ли разница между использованием a std::tupleи только данных struct? typedef std::tuple<int, double, bool> foo_t; struct bar_t { int id; double value; bool dirty; } Из того, что я нашел в Интернете, я обнаружил, что есть два основных отличия: structболее читабельный и tupleимеет много общих функций, которые можно использовать. Должна …
96 c++  struct  tuples 

5
Как указать предпочтение пути к библиотеке?
Я компилирую программу на C ++, используя g++и ld. У меня есть .soбиблиотека, которую я хочу использовать при компоновке. Однако библиотека с таким же именем существует /usr/local/libи ldвыбирает эту библиотеку вместо той, которую я прямо указываю. Как я могу это исправить? В приведенных ниже примерах используется файл моей библиотеки /my/dir/libfoo.so.0. …
96 c++  linker  g++ 

4
Заменил бы '::' на '. создать неясности в C ++?
В C ++ оператор ::используется для доступа к классам, функциям и переменным в пространстве имен или классе. Если бы спецификация языка использовалась .вместо того, чтобы ::в тех случаях, например, при доступе к переменным / методам экземпляра объекта, вызывать ли это возможные неоднозначности, которых нет ::? Учитывая, что C ++ не …


2
Как вернуть интеллектуальные указатели (shared_ptr) по ссылке или по значению?
Допустим, у меня есть класс с методом, который возвращает shared_ptr. Каковы возможные преимущества и недостатки возврата по ссылке или по значению? Две возможные подсказки: Раннее разрушение объекта. Если я возвращаю shared_ptrссылку by (const), счетчик ссылок не увеличивается, поэтому я рискую удалить объект, когда он выходит за пределы области видимости в …

5
Могу ли я инициализировать список векторов типа «только перемещение»?
Если я пропущу следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptrs в вектор. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Очевидно, это не может работать, потому что std::unique_ptrне копируется: ошибка: использование удаленной функции 'std :: …

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