|
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<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value orstd::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
-
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 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. 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(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 3933 of file json.hpp.
|