|
◆ erase() [2/4]
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 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'; basic_json<> json default JSON class
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 16122 of file json.hpp.
|