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

84
Что быстрее: x << 1 или x << 10?

Я не хочу ничего оптимизировать, клянусь, я просто хочу задать этот вопрос из любопытства. Я знаю, что на большинстве оборудования есть сборочная команда битового сдвига (например shl, shr), которая представляет собой единственную команду. Но имеет ли значение (с точки зрения наносекунды или с...

84
Объединение строк не работает должным образом [закрыто]

Трудно сказать, о чем здесь спрашивают. Этот вопрос двусмысленный, расплывчатый, неполный, чрезмерно широкий или риторический, и на него нельзя разумно ответить в его нынешней форме. Чтобы прояснить этот вопрос и снова открыть его, посетите Справочный центр . Закрыт 8 лет назад . Я знаю, что это...

84
Неопределенное поведение и точки последовательности перезагружены

Считайте эту тему продолжением следующей темы: Предыдущая партия Неопределенное поведение и точки последовательности Давайте еще раз вернемся к этому забавному и запутанному выражению (выделенные курсивом фразы взяты из темы выше * улыбка *): i += ++i; Мы говорим, что это вызывает неопределенное...

84
В чем смысл черт характера STL?

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

84
Почему память CUDA так быстро закреплена?

Я наблюдаю значительное ускорение передачи данных, когда использую закрепленную память для передачи данных CUDA. В Linux основным системным вызовом для достижения этой цели является mlock. На странице руководства mlock говорится, что блокировка страницы предотвращает ее замену: mlock () блокирует...

84
Как фотошоп совмещает два изображения вместе? [закрыто]

Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 1 год назад . Уточните этот вопрос Может кто-нибудь объяснить, как Photoshop...

84
__cdecl или __stdcall в Windows?

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

84
Может ли оператор приведения быть явным?

Когда дело доходит до конструкторов, добавление ключевого слова explicitпредотвращает создание объекта энтузиастом компилятора, когда это не было первым намерением программиста. Доступен ли такой механизм и для операторов приведения? struct Foo { operator std::string() const; }; Здесь, например, я...

84
Эквивалент #region для C ++

Что такое C ++-эквивалент #region для C ++, чтобы я мог вставлять сворачиваемые биты пользовательского кода и облегчить чтение моего кода?

84
Qt «частные слоты»: что это?

Я понимаю, как им пользоваться, но меня беспокоит его синтаксис. Что делает "приватные слоты:"? Я никогда раньше не видел чего-то между ключевым словом private и: в определении класса. Здесь творится какая-то причудливая магия C ++? И пример здесь: #include <QObject> class Counter : public...

84
Является ли x + = a быстрее, чем x = x + a?

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

84
Enum против строго типизированного перечисления

Я новичок в программировании на C ++. Сегодня наткнулся на новую тему: строго типизированный enum. Я немного исследовал это, но до сих пор не могу понять, зачем нам это нужно и что от этого нужно? Например, если у нас есть: enum xyz{a, b, c}; /*a = 0, b = 1, c = 2, (Typical C format)*/ Зачем нужно...

84
Как выбрать между картой и unordered_map?

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

84
Всегда ли вызов деструктора вручную является признаком плохого дизайна?

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

84
Как определить разные типы для одного и того же класса в C ++

Я хотел бы иметь несколько типов, которые имеют одну и ту же реализацию, но по-прежнему относятся к разному типу в C ++. Чтобы проиллюстрировать свой вопрос на простом примере, я хотел бы иметь класс для яблок, апельсинов и бананов, у всех одинаковые операции и одинаковая реализация. Я бы хотел,...

84
Является ли подписанное целочисленное переполнение неопределенным поведением в C ++?

Как известно, целочисленное переполнение со знаком - это неопределенное поведение . Но в cstdintдокументации по C ++ 11 есть кое-что интересное : целочисленный тип со знаком шириной ровно 8, 16, 32 и 64 бита соответственно без битов заполнения и с использованием дополнения до 2 для отрицательных...

84
std :: dynarray против std :: vector

C ++ 14 представляет std::dynarray: std :: dynarray - это контейнер последовательности, который инкапсулирует массивы с размером, который фиксируется при построении и не изменяется на протяжении всего времени существования объекта. std::dynarrayдолжен быть выделен во время выполнения так же, как...

84
Почему в стандартной библиотеке C ++ нет transform_if?

Возник случай использования, когда нужно сделать условную копию (1. выполнимая с copy_if), но из контейнера значений в контейнер указателей на эти значения (2. выполнимая с transform). С доступными инструментами я не могу сделать это менее чем за два шага: #include <vector> #include...

84
Почему C ++ позволяет нам заключать имя переменной в круглые скобки при объявлении переменной?

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