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

Предоставляет совместный, отредактированный сообществом C ++ FAQ

4
Как перегрузить std :: swap ()
std::swap() используется многими стандартными контейнерами (такими как std::list и std::vector) во время сортировки и даже назначения. Но стандартная реализация swap() очень обобщена и довольно неэффективна для пользовательских типов. Таким образом, эффективность может быть повышена за счет перегрузки std::swap()с помощью реализации конкретного типа. Но как его реализовать, чтобы он использовался контейнерами …

7
Другой результат с плавающей запятой при включенной оптимизации - ошибка компилятора?
Приведенный ниже код работает в Visual Studio 2008 с оптимизацией и без нее. Но работает только на g ++ без оптимизации (O0). #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t …
109 c++  optimization  g++  c++-faq 

3
Почему std :: getline () пропускает ввод после форматированного извлечения?
У меня есть следующий фрагмент кода, который запрашивает у пользователя свое имя и статус: #include <iostream> #include <string> int main() { std::string name; std::string state; if (std::cin >> name && std::getline(std::cin, state)) { std::cout << "Your name is " << name << " and you live in " << state; …
109 c++  input  iostream  istream  c++-faq 

4
Что такое прозрачные компараторы?
В C ++ 14 ассоциативные контейнеры, похоже, изменились с C ++ 11 - [associative.reqmts] / 13 говорит: Шаблоны функций - членов find, count, lower_bound, upper_bound, и equal_rangeне должен участвовать в разрешении перегрузки , если тип Compare::is_transparentне существует. Какова цель сделать компаратор «прозрачным»? C ++ 14 также предоставляет такие шаблоны библиотек: …
106 c++  c++14  c++-faq 

3
Почему простая программа в стиле «Hello World» не компилируется с Turbo C ++?
Я начал изучать C ++ для своего класса программирования. Я скачал эту программу "Hello World": #include <iostream> using namespace std; int main() { cout << "Hello, World!"; return 0; } но Turbo C ++ жалуется: Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM' Error D:\HELLO.CPP 2: Declaration syntax error …
101 c++  turbo-c++  c++-faq 

4
Каков правильный ответ для cout << a ++ << a ;?
Недавно в интервью был задан следующий вопрос объективного типа. int a = 0; cout &lt;&lt; a++ &lt;&lt; a; Ответы: а. 10 б. 01 с. неопределенное поведение Я ответил на вариант b, т.е. вывод будет «01». Но, к моему удивлению, позже интервьюер сказал мне, что правильный ответ - вариант c: undefined. …
98 c++  c++-faq 

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

17
В чем смысл указателей на функции?
Мне сложно увидеть полезность указателей на функции. Я предполагаю, что в некоторых случаях это может быть полезно (в конце концов, они существуют), но я не могу придумать случая, когда лучше или неизбежно использовать указатель на функцию. Не могли бы вы привести пример правильного использования указателей на функции (на C или …
94 c++  c  function  pointers  c++-faq 

2
Функция с тем же именем, но другой подписью в производном классе
У меня есть функция с тем же именем, но с другой сигнатурой в базовом и производном классах. Когда я пытаюсь использовать функцию базового класса в другом классе, который наследуется от производного, я получаю сообщение об ошибке. См. Следующий код: class A { public: void foo(string s){}; }; class B : …

2
Когда лишние круглые скобки влияют, кроме приоритета оператора?
Круглые скобки в C ++ используются во многих местах: например, в вызовах функций и выражениях группировки для переопределения приоритета операторов. Помимо недопустимых дополнительных круглых скобок (например, вокруг списков аргументов вызова функций), общее, но не абсолютное правило C ++ состоит в том, что лишние круглые скобки никогда не повредят : 5.1 …

3
Что такое правило «как если бы»?
Как сказано в названии, Что такое правило «как если бы»? Типичный ответ, который можно получить: Правило, разрешающее любые преобразования кода, которые не изменяют наблюдаемое поведение программы. Время от времени мы получаем поведение от определенных реализаций, которые приписываются этому правилу. Много раз ошибочно. Итак, что же это за правило. В стандарте …
89 c++  c  optimization  c++-faq  as-if 

5
Передача общих указателей в качестве аргументов
Если я объявляю объект, заключенный в общий указатель: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); затем я хотел передать его как аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Это просто увеличивает счетчик ссылок shared_pt, и все в порядке? Или он оставляет висящий указатель? Вы все еще должны …

3
Перегрузка конструктора копирования и оператора = в C ++: возможна ли общая функция?
Поскольку конструктор копирования MyClass(const MyClass&amp;); и оператор = перегрузка MyClass&amp; operator = (const MyClass&amp;); имеют практически одинаковый код, одинаковый параметр и отличаются только при возврате, возможно ли иметь общую функцию для них обоих?

1
Что такое руководства по выбору шаблонов и когда их следует использовать?
Стандарт C ++ 17 представляет «руководства по выводам шаблонов». Я так понимаю, они как-то связаны с новым выводом аргументов шаблона для конструкторов, представленным в этой версии стандарта, но я еще не видел простого объяснения в стиле FAQ, что они собой представляют и для чего они нужны. Что такое руководства по …

1
gcc / g ++: «Нет такого файла или каталога»
g++ дает мне ошибки формы: foo.cc:&lt;line&gt;:&lt;column&gt;: fatal error: &lt;bar&gt;: No such file or directory compilation terminated. То же самое и при компиляции C-программ с использованием gcc. Почему это? Обратите внимание: этот вопрос задавали много раз раньше, но каждый раз он относился к ситуации, в которой спрашивает. Цель этого вопроса состоит …
87 c++  c  gcc  g++  c++-faq 

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