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

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


4
Как реализована среда выполнения обработки исключений C ++?
Меня заинтриговало, как работает механизм обработки исключений C ++. В частности, где хранится объект исключения и как он распространяется через несколько областей, пока не будет обнаружен? Он хранится в какой-то глобальной области? Поскольку это может быть специфическим для компилятора, может ли кто-нибудь объяснить это в контексте пакета компиляторов g ++?

7
Как вызвать функцию C ++ из C?
Я знаю это. Вызов функции C из C ++: Если бы мое приложение было на C ++ и мне пришлось бы вызывать функции из библиотеки, написанной на C. Тогда я бы использовал //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. Это не повлияет на имя, C_library_functionи …
84 c++  c  visual-c++  extern-c 

2
Почему C ++ позволяет нам заключать имя переменной в круглые скобки при объявлении переменной?
Например, такое объявление: int (x) = 0; Или даже это: int (((x))) = 0; Я наткнулся на это, потому что в моем коде оказался фрагмент, похожий на следующий: struct B { }; struct C { C (B *) {} void f () {}; }; int main() { B *y; C …

3
Всегда ли указатель с правильным адресом и типом является действительным указателем, начиная с C ++ 17?
(В отношении этого вопроса и ответа .) До стандарта C ++ 17 в [basic.compound] / 3 было включено следующее предложение : Если объект типа T расположен по адресу A, говорят, что указатель типа cv T *, значением которого является адрес A, указывает на этот объект, независимо от того, как было …

3
__cdecl или __stdcall в Windows?
В настоящее время я разрабатываю библиотеку C ++ для Windows, которая будет распространяться как DLL. Моя цель - максимизировать бинарную совместимость; точнее, функции в моей DLL должны использоваться из кода, скомпилированного с несколькими версиями MSVC ++ и MinGW, без необходимости перекомпилировать DLL. Однако я не понимаю, какое соглашение о вызовах …


9
Что быстрее: x << 1 или x << 10?
Я не хочу ничего оптимизировать, клянусь, я просто хочу задать этот вопрос из любопытства. Я знаю, что на большинстве оборудования есть сборочная команда битового сдвига (например shl, shr), которая представляет собой единственную команду. Но имеет ли значение (с точки зрения наносекунды или с точки зрения процессора), сколько бит вы сдвигаете. …
84 c++  c  performance  cpu  low-level 

6
Оператор if vs оператор if-else, что быстрее? [закрыто]
Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт 3 года назад . Уточните этот вопрос На днях я спорил с другом по поводу этих …

3
Почему память CUDA так быстро закреплена?
Я наблюдаю значительное ускорение передачи данных, когда использую закрепленную память для передачи данных CUDA. В Linux основным системным вызовом для достижения этой цели является mlock. На странице руководства mlock говорится, что блокировка страницы предотвращает ее замену: mlock () блокирует страницы в диапазоне адресов, начиная с addr и продолжая len байтов. …
84 c++  c  linux  cuda 

12
Всегда ли вызов деструктора вручную является признаком плохого дизайна?
Я подумал: мол, если вы вызываете деструктор вручную - вы что-то делаете не так. Но всегда ли так? Есть контрпримеры? Ситуации, когда необходимо вызвать его вручную или когда этого трудно / невозможно / нецелесообразно избежать?

1
В чем смысл черт характера STL?
Я заметил, что в моей копии справочника SGI STL есть страница о характеристиках характера, но я не вижу, как они используются? Заменяют ли они функции string.h? Кажется, что они не используются std::string, например, length()метод on std::stringне использует length()метод черт характера . Почему существуют Черты характера и используются ли они на …

5
Как выбрать между картой и unordered_map?
Предположим, я хотел сопоставить данные со строкой в ​​качестве ключа. Какой контейнер выбрать, mapили unordered_map? unordered_mapзанимает больше памяти, поэтому предположим, что память не является проблемой, а проблема заключается в скорости. unordered_mapобычно должен давать среднюю сложность O (1) с наихудшим случаем O (n). В каких случаях он достигнет O (n)? Когда …

10
Есть ли элегантный и быстрый способ проверить, что 1-бит целого числа находится в непрерывной области?
Мне нужно проверить, образуют ли позиции (от 0 до 31 для 32-битного целого числа) с битовым значением 1 непрерывную область. Например: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Я хочу, чтобы этот тест, то есть какая-то функция has_contiguous_one_bits(int), был переносимым. Один из очевидных способов - перебрать позиции, чтобы найти первый …

11
Является ли x + = a быстрее, чем x = x + a?
Я читал "Язык программирования C ++" Страуструпа, где он говорит, что из двух способов добавить что-то к переменной x = x + a; и x += a; Он предпочитает, +=потому что это, скорее всего, лучше реализовано. Думаю, он имеет в виду, что тоже быстрее работает. Но так ли это на …

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