- Make the iterator range illustrations legible in dark mode (prefers-color-scheme rules inside the SVGs). - Add a "Byte layout" section with a color-coded byte table to each binary format page (BJData, BON8, BSON, CBOR, MessagePack, UBJSON), and highlight the smallest size per file in the comparison table. - Add "See also" sections to the overview pages that lacked one. - Split the release notes into one page per release, grouped by minor version on the overview page, with an "API changes" section per release generated from the API pages' version histories (hooks/api_changes.py). - Fact-check the release notes and version histories against the release tags and correct wrong or misleading entries (e.g., json_serializer 2.1.0, merge_patch 3.1.0, items, count, operator[], to_bjdata, std::string_view key support). Signed-off-by: Niels Lohmann <mail@nlohmann.me>
1.9 KiB
nlohmann::basic_json::emplace_back
template<class... Args>
reference emplace_back(Args&& ... args);
Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON
#!json null value, an empty array is created before appending the value created from args.
Template parameters
Args- compatible types to create a
basic_jsonobject
Iterator invalidation
By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the
end() iterator) and all references to the elements are invalidated. Otherwise, only the end()
iterator is invalidated.
Parameters
args(in)- arguments to forward to a constructor of
basic_json
Return value
reference to the inserted element
Exception safety
Strong guarantee: if an exception is thrown, there are no changes to any JSON value. As an exception, a #!json null
value is converted to an empty array before the element is added and keeps that type if adding the element throws.
Exceptions
Throws type_error.311 when called on a type other than JSON
array or #!json null; example: "cannot use emplace_back() with number"
Complexity
Amortized constant.
Examples
??? example
The example shows how `emplace_back()` can be used to add elements to a JSON array. Note how the `null` value was
silently converted to a JSON array.
```cpp
--8<-- "examples/emplace_back.cpp"
```
Output:
```json
--8<-- "examples/emplace_back.output"
```
See also
- operator+= add a value to an array/object
- push_back add a value to an array/object
- Modifying values - the article on modifying values
Version history
- Added in version 2.0.8.
- Returns reference since 3.7.0.