Вопросы
Как преобразовать int в строку в C++?
Заголовок: Как конвертировать int
в эквивалентный string
в C++? Есть ли другие способы?
Описание проблемы:
Я сталкиваюсь с задачей преобразования целого числа (int
) в строку (string
) в C++. На данный момент я знаю о двух способах, которые можно использовать для достижения этой...
Почему следует использовать указатель вместо самого объекта?
Я пришёл из мира Java и начал работать с объектами в C++. Но меня смутило, что многие разработчики часто используют указатели на объекты, а не сами объекты. Например, вот так:
Object *myObject = new Object;
вместо этого:
Object myObject;
Также, вместо того чтобы...
Что такое лямбда-выражение и когда его следует использовать?
Вопрос: Что такое лямбда-выражение в C++11? В каких ситуациях я мог бы его использовать? Какие классы задач они решают, что было невозможно до их введения?
Несколько примеров и областей применения были бы полезны.
push_back против emplace_back: в чем разница?
Я немного запутался в различии между методами push_back
и emplace_back
в стандартной библиотеке C++.
Вот определения этих методов:
void emplace_back(Type&& _Val);
void push_back(const Type& _Val);
void push_back(Type&& _Val);
Учитывая, что существует перегрузка метода...
Какова разница между 'typedef' и 'using'?
Я знаю, что в C++11 мы можем использовать ключевое слово using для написания псевдонимов типов, аналогично typedef. Например:
typedef int MyInt;
Что, как я понимаю, эквивалентно:
using MyInt = int;
Эта новая синтаксическая конструкция появилась в рамках попытки создать способ для выражения...
Что такое std::move() и когда его следует использовать?
Проблема: Необходимость в разъяснении функциональности и применения технологии
Что это?
Я столкнулся с [название технологии или инструмента], и мне не совсем ясно, что это такое и какие его основные характеристики.Что он делает?
Хотел бы получить ясное объяснение...
Что означает T&& (двойной амперсанд) в C++11?
Я изучаю новые возможности C++11, и одна из них, которую я заметил, — это двойной амперсанд при объявлении переменных, например, T&& var.
Во-первых, как называется эта конструкция? Мне бы хотелось, чтобы Google позволял искать подобные символы.
Что именно это означает?
На первый взгляд, кажется,...
В чем разница между constexpr и const?
Заголовок: В чём разница между constexpr
и const
в C++?
Тело вопроса:
Я пытаюсь разобраться в различиях между constexpr
и const
в C++. У меня есть несколько вопросов по этой теме:
- Когда я могу использовать только одно из этих ключевых слов?
- В каких ситуациях я могу использовать...
Как преобразовать std::string в int?
Я хочу преобразовать строку в целое число, и я не имею в виду ASCII-коды.
Суть проблемы в том, что мы получаем уравнение в виде строки. Нам нужно разбить его, правильно отформатировать и решить линейные уравнения. При этом у меня не получается преобразовать строку в целое число.
Я знаю, что...
Когда действительно стоит использовать noexcept?
Когда и как использовать noexcept в C++?
Ключевое слово noexcept может быть применено к многим сигнатурам функций, но я не уверен, когда именно следует использовать его на практике. Из прочитанного мною стало понятно, что добавление noexcept в последний момент решает некоторые важные проблемы,...
Покончены ли дни передачи const std::string & в качестве параметра?
Я слышал недавний доклад Герба Саттера, который утверждал, что причины передавать std::vector
и std::string
по const &
в значительной мере утратили свою актуальность. Он предложил, что написание функции вроде следующей сейчас предпочтительнее:
std::string do_something ( std::string...
Каковы преимущества инициализации списка (с использованием фигурных скобок)?
Описание проблемы:
Я столкнулся с вопросом о том, как правильно и эффективно инициализировать объекты класса в C++. У меня есть следующий код:
MyClass a1 {a}; // более очевидно и менее подвержено ошибкам по сравнению с остальными тремя
MyClass a2 = {a};
MyClass a3 = a;
MyClass...
Возможно ли вывести тип переменной в стандартном C++?
Описание проблемы:
Я пытаюсь вывести тип переменной в C++, но, вместо ожидаемого результата, не могу добиться нужного вывода. Например, у меня есть следующий код:
int a = 12;
cout << typeof(a) << endl;
Я ожидаю, что результат будет:
int
Однако компилятор выдает ошибку,...
Основные цели std::forward и решаемые им проблемы
Описание проблемы:
Я изучаю концепцию идеальной передачи (perfect forwarding) в C++ и столкнулся с вопросом о том, как работает функция std::forward
. В приведенном ниже коде std::forward
используется для преобразования именованных rvalue-ссылок t1
и t2
в безымянные...
Почему `std::initializer_list` не поддерживает оператор подиндексации?
Вопрос:
Я пишу функцию, которая принимает параметр типа std::initializer_list
, названный list
, и мне необходимо произвести произвольный доступ к элементам этого списка. Было бы удобно использовать list[i]
вместо list.begin()[i]
. Однако, почему в std::initializer_list
не реализован...
Почему объект, возвращаемый по значению, имеет тот же адрес, что и объект внутри метода?
Проблема: Почему адреса переменных a
и b
совпадают?
Я столкнулся с интересным поведением в моем коде на C++, где две переменные a
и b
, каждая из которых объявлена в разных контекстах (функции foo
и main
), имеют одинаковый адрес в памяти. Вот код, который я...
Оценивается ли условие в цикле `for` диапазона C++11 на каждой итерации?
Проблема с вызовом метода в цикле
В коде у меня есть следующий фрагмент:
for(auto& entity : memoryManager.getItems())
entity->update(mFrameTime);
У меня возник вопрос: если memoryManager
содержит 1000 элементов, будет ли memoryManager.getItems()
вызываться 1000 раз (при...
Можно ли вручную определить преобразование для класса enum?
Описание проблемы:
Я хочу определить каст для enum class
, чтобы можно было использовать его в условиях, аналогично тому, как это делается для классов, через явное преобразование типов. Например, у меня есть следующий класс:
class Test {
public:
explicit operator bool() { return...
Использование `destructor = delete;` в C++
Рассмотрим следующий класс:
struct S { ~S() = delete; };
Кратко, суть вопроса состоит в том, что я не могу создавать экземпляры S
, например, используя S s{};
, потому что не могу их уничтожить. Как упоминалось в комментариях, я все же могу создать экземпляр, вызвав S *s = new S;
,...