:relfileprefix: ../../
[#boost-urls-params_ref]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::params_ref


A view representing query parameters in a URL


=== Synopsis

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

[source,cpp,subs="verbatim,macros,-callouts"]
----
class params_ref
    : public xref:boost/urls/params_base.adoc[params_base];
----

===  Types
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/params_base/const_iterator.adoc[`const_iterator`]  ¦

A Bidirectional iterator to a query parameter

¦xref:boost/urls/params_base/const_reference.adoc[`const_reference`]  ¦

The reference type

¦xref:boost/urls/params_base/difference_type.adoc[`difference_type`]  ¦

A signed integer type used to represent differences.

¦xref:boost/urls/params_base/iterator.adoc[`iterator`]  ¦

A Bidirectional iterator to a query parameter

¦xref:boost/urls/params_base/reference.adoc[`reference`]  ¦

The reference type

¦xref:boost/urls/params_base/size_type.adoc[`size_type`]  ¦

An unsigned integer type to represent sizes.

¦xref:boost/urls/params_base/value_type.adoc[`value_type`]  ¦

The value type

|===
===  Member Functions
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/params_ref/append.adoc[`append`]  ¦

Append elements

¦xref:boost/urls/params_ref/assign.adoc[`assign`]  ¦

Assign elements

¦xref:boost/urls/params_base/begin.adoc[`begin`]  ¦

Return an iterator to the beginning

¦xref:boost/urls/params_base/buffer.adoc[`buffer`]  ¦

Return the referenced character buffer.

¦xref:boost/urls/params_ref/clear.adoc[`clear`]  ¦

Clear the contents of the container

¦xref:boost/urls/params_base/contains.adoc[`contains`]  ¦

Return true if a matching key exists

¦xref:boost/urls/params_base/count.adoc[`count`]  ¦

Return the number of matching keys

¦xref:boost/urls/params_base/empty.adoc[`empty`]  ¦

Return true if there are no params

¦xref:boost/urls/params_base/end.adoc[`end`]  ¦

Return an iterator to the end

¦xref:boost/urls/params_ref/erase.adoc[`erase`]  ¦

Erase elements

¦xref:boost/urls/params_base/find.adoc[`find`]  ¦

Find a matching key

¦xref:boost/urls/params_base/find_last.adoc[`find_last`]  ¦

Find a matching key

¦xref:boost/urls/params_ref/insert.adoc[`insert`]  ¦

Insert elements

¦xref:boost/urls/params_ref/2conversion.adoc[`operator params_view`]  ¦

Conversion

¦xref:boost/urls/params_ref/operator_assign.adoc[`operator=`]  ¦

Assignment

¦xref:boost/urls/params_ref/2constructor.adoc[`params_ref`] [.small]#[constructor]# ¦

Constructor

¦xref:boost/urls/params_ref/replace.adoc[`replace`]  ¦

Replace elements

¦xref:boost/urls/params_ref/set.adoc[`set`]  ¦

Set a value

¦xref:boost/urls/params_base/size.adoc[`size`]  ¦

Return the number of params

¦xref:boost/urls/params_ref/unset.adoc[`unset`]  ¦

Remove the value on an element

¦xref:boost/urls/params_ref/url.adoc[`url`]  ¦

Return the referenced url

|===
===  Static Member Functions
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/params_base/max_size.adoc[`max_size`]  ¦

Return the maximum number of characters possible

|===

=== Description


Objects of this type are used to interpret
the query parameters as a bidirectional view
of key&sol;value pairs.
The view does not retain ownership of the
elements and instead references the original
url. The caller is responsible for ensuring
that the lifetime of the referenced url
extends until it is no longer referenced.
The view is modifiable; calling non-const
members causes changes to the referenced
url.




Percent escapes in strings returned when
dereferencing iterators are automatically
decoded.
Reserved characters in strings supplied
to modifier functions are automatically
percent-escaped.
[,cpp]
----
url u( "?first=John&last=Doe" );

params_ref p = u.params();
----

=== Changes to the underlying character buffer

can invalidate iterators which reference it.
Modifications made through the container
invalidate some or all iterators:



* xref:boost/urls/params_ref/append-0f.adoc[append]
: Only `end()`.

* xref:boost/urls/params_ref/assign-09.adoc[assign]
,
xref:boost/urls/params_ref/clear.adoc[clear]
,        `operator&equals;` : All elements.

* xref:boost/urls/params_ref/erase-05.adoc[erase]
: Erased elements and all
elements after (including `end()`).

* xref:boost/urls/params_ref/insert-08.adoc[insert]
: All elements at or after
the insertion point (including `end()`).

* xref:boost/urls/params_ref/replace-0d.adoc[replace]
,
xref:boost/urls/params_ref/set-01.adoc[set]
: Modified
elements and all elements
after (including `end()`).



