git-subtree-dir: libs/json git-subtree-split: f42a74b8f53cc308647123d49d33d1c8122e3f42
5.9 KiB
basic_json::erase
// (1)
iterator erase(iterator pos);
const_iterator erase(const_iterator pos);
// (2)
iterator erase(iterator first, iterator last);
const_iterator erase(const_iterator first, const_iterator last);
// (3)
size_type erase(const typename object_t::key_type& key);
// (4)
void erase(const size_type idx);
-
Removes an element from a JSON value specified by iterator
pos
. The iteratorpos
must be valid and dereferenceable. Thus theend()
iterator (which is valid, but is not dereferenceable) cannot be used as a value forpos
.If called on a primitive type other than
#!json null
, the resulting JSON value will be#!json null
. -
Remove an element range specified by
[first; last)
from a JSON value. The iteratorfirst
does not need to be dereferenceable iffirst == last
: erasing an empty range is a no-op.If called on a primitive type other than
#!json null
, the resulting JSON value will be#!json null
. -
Removes an element from a JSON object by key.
-
Removes an element from a JSON array by index.
Parameters
pos
(in)- iterator to the element to remove
first
(in)- iterator to the beginning of the range to remove
last
(in)- iterator past the end of the range to remove
key
(in)- object key of the elements to remove
idx
(in)- array index of the element to remove
Return value
- Iterator following the last removed element. If the iterator
pos
refers to the last element, theend()
iterator is returned. - Iterator following the last removed element. If the iterator
last
refers to the last element, theend()
iterator is returned. - Number of elements removed. If
ObjectType
is the defaultstd::map
type, the return value will always be0
(key
was not found) or1
(key
was found). - /
Exceptions
- The function can throw the following exceptions:
- Throws
type_error.307
if called on anull
value; example:"cannot use erase() with null"
- Throws
invalid_iterator.202
if called on an iterator which does not belong to the current JSON value; example:"iterator does not fit current value"
- Throws
invalid_iterator.205
if called on a primitive type with invalid iterator (i.e., any iterator which is notbegin()
); example:"iterator out of range"
- Throws
- The function can throw thw following exceptions:
- Throws
type_error.307
if called on anull
value; example:"cannot use erase() with null"
- Throws
invalid_iterator.203
if called on iterators which does not belong to the current JSON value; example:"iterators do not fit current value"
- Throws
invalid_iterator.204
if called on a primitive type with invalid iterators (i.e., iffirst != begin()
andlast != end()
); example:"iterators out of range"
- Throws
- The function can throw thw following exceptions:
- Throws
type_error.307
when called on a type other than JSON object; example:"cannot use erase() with null"
- Throws
- The function can throw thw following exceptions:
- Throws
type_error.307
when called on a type other than JSON object; example:"cannot use erase() with null"
- Throws
out_of_range.401
whenidx >= size()
; example:"array index 17 is out of range"
- Throws
Exception safety
Strong exception safety: if an exception occurs, the original value stays intact.
Complexity
- The complexity depends on the type:
- objects: amortized constant
- arrays: linear in distance between
pos
and the end of the container - strings and binary: linear in the length of the member - other types: constant - The complexity depends on the type:
- objects:
log(size()) + std::distance(first, last)
- arrays: linear in the distance betweenfirst
andlast
, plus linear in the distance betweenlast
and end of the container - strings and binary: linear in the length of the member - other types: constant log(size()) + count(key)
- Linear in distance between
idx
and the end of the container.
Notes
- Invalidates iterators and references at or after the point of the
erase, including the
end()
iterator. - /
- References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
- /
Example
??? example
The example shows the effect of `erase()` for different JSON types using an iterator.
```cpp
--8<-- "examples/erase__IteratorType.cpp"
```
Output:
```json
--8<-- "examples/erase__IteratorType.output"
```
??? example
The example shows the effect of `erase()` for different JSON types using an iterator range.
```cpp
--8<-- "examples/erase__IteratorType_IteratorType.cpp"
```
Output:
```json
--8<-- "examples/erase__IteratorType_IteratorType.output"
```
??? example
The example shows the effect of `erase()` for different JSON types using an object key.
```cpp
--8<-- "examples/erase__key_type.cpp"
```
Output:
```json
--8<-- "examples/erase__key_type.output"
```
??? example
The example shows the effect of `erase()` using an array index.
```cpp
--8<-- "examples/erase__size_type.cpp"
```
Output:
```json
--8<-- "examples/erase__size_type.output"
```
Version history
- Added in version 1.0.0.
- Added support for binary types in version 3.8.0.