JSON for Modern C++  3.0
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::iterator >::value orstd::is_same< InteratorType, typename __basic_json::const_iterator >::value, int >::type = 0>
InteratorType nlohmann::basic_json::erase ( InteratorType  pos)
inline

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 dereferencable) 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]positerator 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
InteratorTypean iterator or const_iterator
Exceptions
std::domain_errorif called on a null value
std::domain_errorif called on an iterator which does not belong to the current JSON value
std::out_of_rangeif called on a primitive type with invalid iterator (i.e., any iterator which is not end())
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.
1 #include <json.hpp>
2 
3 using namespace nlohmann;
4 
5 int main()
6 {
7  // create JSON values
8  json j_boolean = true;
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";
14 
15  // call erase
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());
22 
23  // print values
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';
30 }
a class to store JSON values
Definition: json.hpp:130
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3130
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3052
namespace for Niels Lohmann
Definition: json.hpp:55
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:2831
Output (play with this example online):
null
null
null
{"one":1}
[1,2,8,16]
null
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/erase__IteratorType.cpp -o erase__IteratorType