template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
Removes the element specified by iterator pos. The iterator pos must be valid and dereferenceable. Thus the end()
iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos.
If called on a primitive type other than null
, the resulting JSON value will be null
.
- Parameters
-
[in] | pos | iterator to the element to remove |
- Returns
- Iterator following the last removed element. If the iterator pos refers to the last element, the
end()
iterator is returned.
- Template Parameters
-
- Postcondition
- Invalidates iterators and references at or after the point of the erase, including the
end()
iterator.
- Exceptions
-
type_error.307 | if called on a null value; example: "cannot use
erase() with null" |
invalid_iterator.202 | if called on an iterator which does not belong to the current JSON value; example: "iterator does not fit current
value" |
invalid_iterator.205 | if called on a primitive type with invalid iterator (i.e., any iterator which is not begin() ); example: "iterator
out of range" |
- Complexity^^ The complexity depends on the type:
- objects: amortized constant
- arrays: linear in distance between pos and the end of the container
- strings: linear in the length of the string
- other types: constant
- Example^^ The example shows the result of erase() for different JSON
- types. ^^
2 #include <nlohmann/json.hpp> 10 json j_number_integer = 17;
11 json j_number_float = 23.42;
12 json j_object = {{
"one", 1}, {
"two", 2}};
13 json j_array = {1, 2, 4, 8, 16};
14 json j_string =
"Hello, world";
17 j_boolean.erase(j_boolean.begin());
18 j_number_integer.erase(j_number_integer.begin());
19 j_number_float.erase(j_number_float.begin());
20 j_object.erase(j_object.find(
"two"));
21 j_array.erase(j_array.begin() + 2);
22 j_string.erase(j_string.begin());
25 std::cout << j_boolean <<
'\n';
26 std::cout << j_number_integer <<
'\n';
27 std::cout << j_number_float <<
'\n';
28 std::cout << j_object <<
'\n';
29 std::cout << j_array <<
'\n';
30 std::cout << j_string <<
'\n';
basic_json<> json
default JSON class
Output (play with this example online):^^ null
null
null
{"one":1}
[1,2,8,16]
null
^^ The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/erase__IteratorType.cpp -o erase__IteratorType
- See also
- erase(IteratorType, IteratorType) – removes the elements in the given range
-
erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
erase(const size_type) – removes the element from an array at the given index
- Since
- version 1.0.0
Definition at line 16017 of file json.hpp.