|
|
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 NumberUnsignedType = uint64_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 or std::is_same< InteratorType, typename basic_json_t::const_iterator >::value , int >::type = 0>
Removes the element specified by iterator pos. Invalidates iterators and references at or after the point of the erase, including the end() iterator. 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
-
- Exceptions
-
| std::domain_error | if called on a null value; example: "cannot use
erase() with null" |
| std::domain_error | if called on an iterator which does not belong to the current JSON value; example: "iterator does not fit current value" |
| std::out_of_range | if called on a primitive type with invalid iterator (i.e., any iterator which is not end()); 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. 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"; 16 j_boolean.erase(j_boolean.begin()); 17 j_number_integer.erase(j_number_integer.begin()); 18 j_number_float.erase(j_number_float.begin()); 19 j_object.erase(j_object.find( "two")); 20 j_array.erase(j_array.begin() + 2); 21 j_string.erase(j_string.begin()); 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'; 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 -Isrc doc/examples/erase__IteratorType.cpp -o erase__IteratorType
- See also
- erase(InteratorType, InteratorType) – 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 3650 of file json.hpp.
|