c++11 ×19
Создан 06.01.2025
21
голоса
5
ответов
38
просмотров
Как преобразовать int в строку в C++?

Заголовок: Как конвертировать int в эквивалентный string в C++? Есть ли другие способы?

Описание проблемы: Я сталкиваюсь с задачей преобразования целого числа (int) в строку (string) в C++. На данный момент я знаю о двух способах, которые можно использовать для достижения этой...

19
голоса
5
ответов
51
просмотров
Почему следует использовать указатель вместо самого объекта?

Я пришёл из мира Java и начал работать с объектами в C++. Но меня смутило, что многие разработчики часто используют указатели на объекты, а не сами объекты. Например, вот так:

Object *myObject = new Object;

вместо этого:

Object myObject;

Также, вместо того чтобы...

17
голоса
0
ответов
33
просмотров
Что такое лямбда-выражение и когда его следует использовать?

Вопрос: Что такое лямбда-выражение в C++11? В каких ситуациях я мог бы его использовать? Какие классы задач они решают, что было невозможно до их введения?

Несколько примеров и областей применения были бы полезны.

12
голоса
5
ответов
50
просмотров
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);

Учитывая, что существует перегрузка метода...

12
голоса
5
ответов
41
просмотров
Какова разница между 'typedef' и 'using'?

Я знаю, что в C++11 мы можем использовать ключевое слово using для написания псевдонимов типов, аналогично typedef. Например:

typedef int MyInt;

Что, как я понимаю, эквивалентно:

using MyInt = int;

Эта новая синтаксическая конструкция появилась в рамках попытки создать способ для выражения...

11
голоса
4
ответов
45
просмотров
Что такое std::move() и когда его следует использовать?

Проблема: Необходимость в разъяснении функциональности и применения технологии

  1. Что это?
    Я столкнулся с [название технологии или инструмента], и мне не совсем ясно, что это такое и какие его основные характеристики.

  2. Что он делает?
    Хотел бы получить ясное объяснение...

11
голоса
1
ответов
42
просмотров
Что означает T&& (двойной амперсанд) в C++11?

Я изучаю новые возможности C++11, и одна из них, которую я заметил, — это двойной амперсанд при объявлении переменных, например, T&& var.

Во-первых, как называется эта конструкция? Мне бы хотелось, чтобы Google позволял искать подобные символы.

Что именно это означает?

На первый взгляд, кажется,...

8
голоса
5
ответов
32
просмотров
В чем разница между constexpr и const?

Заголовок: В чём разница между constexpr и const в C++?

Тело вопроса:

Я пытаюсь разобраться в различиях между constexpr и const в C++. У меня есть несколько вопросов по этой теме:

  1. Когда я могу использовать только одно из этих ключевых слов?
  2. В каких ситуациях я могу использовать...
8
голоса
5
ответов
28
просмотров
Как преобразовать std::string в int?

Я хочу преобразовать строку в целое число, и я не имею в виду ASCII-коды.

Суть проблемы в том, что мы получаем уравнение в виде строки. Нам нужно разбить его, правильно отформатировать и решить линейные уравнения. При этом у меня не получается преобразовать строку в целое число.

Я знаю, что...

7
голоса
5
ответов
38
просмотров
Когда действительно стоит использовать noexcept?

Когда и как использовать noexcept в C++?

Ключевое слово noexcept может быть применено к многим сигнатурам функций, но я не уверен, когда именно следует использовать его на практике. Из прочитанного мною стало понятно, что добавление noexcept в последний момент решает некоторые важные проблемы,...

6
голоса
5
ответов
26
просмотров
Покончены ли дни передачи const std::string & в качестве параметра?

Я слышал недавний доклад Герба Саттера, который утверждал, что причины передавать std::vector и std::string по const & в значительной мере утратили свою актуальность. Он предложил, что написание функции вроде следующей сейчас предпочтительнее:

std::string do_something ( std::string...
6
голоса
4
ответов
29
просмотров
Каковы преимущества инициализации списка (с использованием фигурных скобок)?

Описание проблемы:

Я столкнулся с вопросом о том, как правильно и эффективно инициализировать объекты класса в C++. У меня есть следующий код:

MyClass a1 {a};     // более очевидно и менее подвержено ошибкам по сравнению с остальными тремя
MyClass a2 = {a};
MyClass a3 = a;
MyClass...
6
голоса
5
ответов
37
просмотров
Возможно ли вывести тип переменной в стандартном C++?

Описание проблемы:

Я пытаюсь вывести тип переменной в C++, но, вместо ожидаемого результата, не могу добиться нужного вывода. Например, у меня есть следующий код:

int a = 12;
cout << typeof(a) << endl;

Я ожидаю, что результат будет:

int

Однако компилятор выдает ошибку,...

5
голоса
5
ответов
13
просмотров
Основные цели std::forward и решаемые им проблемы

Описание проблемы:

Я изучаю концепцию идеальной передачи (perfect forwarding) в C++ и столкнулся с вопросом о том, как работает функция std::forward. В приведенном ниже коде std::forward используется для преобразования именованных rvalue-ссылок t1 и t2 в безымянные...

0
голоса
1
ответов
3
просмотров
Почему `std::initializer_list` не поддерживает оператор подиндексации?

Вопрос:

Я пишу функцию, которая принимает параметр типа std::initializer_list, названный list, и мне необходимо произвести произвольный доступ к элементам этого списка. Было бы удобно использовать list[i] вместо list.begin()[i]. Однако, почему в std::initializer_list не реализован...

0
голоса
3
ответов
4
просмотров
Почему объект, возвращаемый по значению, имеет тот же адрес, что и объект внутри метода?

Проблема: Почему адреса переменных a и b совпадают?

Я столкнулся с интересным поведением в моем коде на C++, где две переменные a и b, каждая из которых объявлена в разных контекстах (функции foo и main), имеют одинаковый адрес в памяти. Вот код, который я...

0
голоса
1
ответов
1
просмотров
Оценивается ли условие в цикле `for` диапазона C++11 на каждой итерации?

Проблема с вызовом метода в цикле

В коде у меня есть следующий фрагмент:

for(auto& entity : memoryManager.getItems()) 
    entity->update(mFrameTime);

У меня возник вопрос: если memoryManager содержит 1000 элементов, будет ли memoryManager.getItems() вызываться 1000 раз (при...

0
голоса
3
ответов
1
просмотров
Можно ли вручную определить преобразование для класса enum?

Описание проблемы:

Я хочу определить каст для enum class, чтобы можно было использовать его в условиях, аналогично тому, как это делается для классов, через явное преобразование типов. Например, у меня есть следующий класс:

class Test {
public:
  explicit operator bool() { return...
0
голоса
5
ответов
1
просмотров
Использование `destructor = delete;` в C++

Рассмотрим следующий класс:

struct S { ~S() = delete; };

Кратко, суть вопроса состоит в том, что я не могу создавать экземпляры S, например, используя S s{};, потому что не могу их уничтожить. Как упоминалось в комментариях, я все же могу создать экземпляр, вызвав S *s = new S;,...