Files
XCSDD/docs/api/containers/array/emplaceback.md
ssdfasd 58a83f445a fix: improve doc link navigation and tree display
- Fix link resolution with proper relative/absolute path handling
- Improve link styling with underline decoration
- Hide leaf nodes from tree, only show directories
- Fix log file path for packaged app
2026-03-19 12:44:08 +08:00

1.0 KiB
Raw Blame History

Array::EmplaceBack()

template<typename... Args>
T& EmplaceBack(Args&&... args);

在数组末尾就地构造一个元素,直接在内存中构造,不产生临时对象。

优势:

  • 避免拷贝或移动开销
  • 直接在底层缓冲区末尾构造元素
  • 参数完美转发,支持任意构造参数

参数:

  • args - 转发给 T 构造函数的参数包

返回: 新构造元素的引用

复杂度: 均摊 O(1)

线程安全: 操作期间不可并发访问

示例:

struct Vertex {
    float x, y, z;
    Vertex(float x_, float y_, float z_) : x(x_), y(y_), z(z_) {}
};

Containers::Array<Vertex> vertices;

// EmplaceBack 直接构造,不产生临时 Vertex 对象
vertices.EmplaceBack(1.0f, 2.0f, 3.0f);
vertices.EmplaceBack(4.0f, 5.0f, 6.0f);

// 对比 PushBack需要先构造临时对象
Vertex v(7.0f, 8.0f, 9.0f);
vertices.PushBack(v);  // 产生拷贝或移动

// EmplaceBack 更高效,始终优先使用

相关文档