JSON for Modern C++ 2.1.1
Loading...
Searching...
No Matches

◆ erase() [4/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>
IteratorType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::erase ( IteratorType  pos)
inline

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]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
IteratorTypean iterator or const_iterator
Postcondition
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
Exceptions
std::domain_errorif called on a null value; example: "cannot use erase() with null"
std::domain_errorif called on an iterator which does not belong to the current JSON value; example: "iterator does not fit current value"
std::out_of_rangeif called on a primitive type with invalid iterator (i.e., any iterator which is not begin()); example: "iterator out of range"
Complexity\n 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\n The example shows the result of erase() for different JSON
types.
1#include <json.hpp>
2
3using json = nlohmann::json;
4
5int main()
6{
7 // create JSON values
8 json j_boolean = true;
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
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}
IteratorType erase(IteratorType pos)
remove element given an iterator
Definition json.hpp:4301
iterator begin() noexcept
returns an iterator to the first element
Definition json.hpp:4670
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
explicitly create an array from an initializer list
Definition json.hpp:2165
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition json.hpp:4581
a class to store JSON values
Definition json.hpp:1040
basic_json<> json
default JSON class
Definition json.hpp:12369

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 
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 4301 of file json.hpp.