|
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 = int64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator>
template<class InteratorType , typename std::enable_if< std::is_same< InteratorType, typename basic_json_t::iterator >::value orstd::is_same< InteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
Removes the element specified by the range [first; last) . Invalidates iterators and references at or after the point of the erase, including the end() iterator. 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
-
- Exceptions
-
std::domain_error | if called on a null value; example: "cannot use
erase() with null" |
std::domain_error | if called on iterators which does not belong to the current JSON value; example: "iterators do not fit current value" |
std::out_of_range | 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.
9 json j_number_integer = 17; 10 json j_number_float = 23.42; 11 json j_object = {{ "one", 1}, { "two", 2}}; 12 json j_array = {1, 2, 4, 8, 16}; 13 json j_string = "Hello, world"; 17 j_number_integer. erase(j_number_integer. begin(), j_number_integer. end()); 18 j_number_float. erase(j_number_float. begin(), j_number_float. end()); 24 std::cout << j_boolean << '\n'; 25 std::cout << j_number_integer << '\n'; 26 std::cout << j_number_float << '\n'; 27 std::cout << j_object << '\n'; 28 std::cout << j_array << '\n'; 29 std::cout << j_string << '\n'; a class to store JSON values
iterator end() returns an iterator to one past the last element
iterator begin() returns an iterator to the first element
iterator find(typename object_t::key_type key) find an element in a JSON object
namespace for Niels Lohmann
InteratorType erase(InteratorType pos) remove element given an iterator
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 -Isrc doc/examples/erase__IteratorType_IteratorType.cpp -o erase__IteratorType_IteratorType
- See also
- erase(InteratorType) – 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 3534 of file json.hpp.
|