Можно ли использовать функцию emplace_back у std::vector без передачи аргументов?

Да, функцию emplaceback у std::vector можно вызвать без передачи аргументов, если тип элементов в векторе имеет конструктор по умолчанию.

Короткий ответ

Что ответить на собеседовании

Да, функцию emplaceback у std::vector можно вызвать без передачи аргументов, если тип элементов в векторе имеет конструктор по умолчанию. В этом случае будет создан новый элемент, инициализированный конструктором по умолчанию.

Подробный разбор

Ответ с пояснениями

Да, функцию emplace_back у std::vector можно вызвать без передачи аргументов, если тип элементов в векторе имеет конструктор по умолчанию. В этом случае будет создан новый элемент, инициализированный конструктором по умолчанию.

Пример:

#include <vector>
#include <iostream>

struct Point {
    int x = 0, y = 0;
    Point() = default; // конструктор по умолчанию
};

int main() {
    std::vector<Point> points;
    points.emplace_back(); // создаст Point с x=0, y=0
    std::cout << points[0].x << ", " << points[0].y << std::endl; // Выведет: 0, 0
}

Если же у типа нет конструктора по умолчанию, то вызов emplace_back() без аргументов приведет к ошибке компиляции.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку