:relfileprefix: ../../../
[#boost-urls-segments_ref-insert-07]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/segments_ref.adoc[pass:[segments_ref]]::insert


Insert segments


=== Synopsis

Declared in header `<https://www.github.com/boostorg/url/blob/develop/include/boost/url/segments_ref.hpp#L471[boost/url/segments_ref.hpp,window=blank_]>`

[source,cpp,subs="verbatim,macros,-callouts"]
----
template<class FwdIt>
xref:boost/urls/segments_base/iterator.adoc[iterator]
insert(
    xref:boost/urls/segments_base/iterator.adoc[iterator] before,
    FwdIt first,
    FwdIt last);
----

=== Description


This function inserts the segments in
a range before the specified position.
Reserved characters in the list are
automatically escaped.



All iterators that are equal to
`before` or come after are invalidated.
[NOTE]

None of the character buffers referenced
by the range may overlap the character
buffer of the underlying url, or else
the behavior is undefined.
[,cpp]
----
std::is_convertible< std::iterator_traits< FwdIt >::reference_type, core::string_view >::value == true
----

=== Linear in `std::distance( first, last ) + this-&gt;url().encoded_resource().size()`.

=== Strong guarantee.

Calls to allocate may throw.




=== Return Value


An iterator to the first
segment inserted, or `before` if
`init.empty()`.



=== Parameters

|===
| Name | Description 

| *before*
| 
An iterator before which
the range is inserted. This may
be equal to `end()`.

| *first,*
| 
last The range of segments
to insert.

|===




