|
◆ erase() [3/4]
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>
IteratorType nlohmann::basic_json::erase |
( |
IteratorType |
first, |
|
|
IteratorType |
last |
|
) |
| |
|
inline |
Removes the element specified by the range [first; last) . The iterator first does not need to be dereferenceable if first == last : erasing an empty range is a no-op.
If called on a primitive type other than null , the resulting JSON value will be null .
- Parameters
-
[in] | first | iterator to the beginning of the range to remove |
[in] | last | iterator past the end of the range to remove |
- Returns
- Iterator following the last removed element. If the iterator second 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.203 | if called on iterators which does not belong to the current JSON value; example: "iterators do not fit current value" |
invalid_iterator.204 | if called on a primitive type with invalid iterators (i.e., if first != begin() and last != end() ); example: "iterators out of range" |
- Complexity
- The complexity depends on the type:
- objects:
log(size()) + std::distance(first, last)
- arrays: linear in the distance between first and last, plus linear in the distance between last and 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(), j_boolean.end());
18 j_number_integer.erase(j_number_integer.begin(), j_number_integer.end());
19 j_number_float.erase(j_number_float.begin(), j_number_float.end());
20 j_object.erase(j_object.find( "two"), j_object.end());
21 j_array.erase(j_array.begin() + 1, j_array.begin() + 3);
22 j_string.erase(j_string.begin(), j_string.end());
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';
Output (play with this example online): null
null
null
{"one":1}
[1,8,16]
null
The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/erase__IteratorType_IteratorType.cpp -o erase__IteratorType_IteratorType
- See also
- erase(IteratorType) – removes the element at a given position
-
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 18355 of file json.hpp.
|