Sobes.tech
Назад к вопросам
Junior — Middle
85

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

Компании, где спрашивали
Телкор

Ответ от нейросети

sobes.tech AI

Да, функцию 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() без аргументов приведет к ошибке компиляции.