:relfileprefix: ../../../
[#boost-urls-params_encoded_base-find_last]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/params_encoded_base.adoc[pass:[params_encoded_base]]::find_last

  


Find a matching key



=== Synopsis
  

[source,cpp,subs="verbatim,macros,-callouts"]
----
xref:boost/urls/params_encoded_base/iterator.adoc[iterator]
xref:boost/urls/params_encoded_base/find_last-05.adoc[pass:[find_last]](
    xref:boost/urls/pct_string_view.adoc[pct_string_view] key,
    xref:boost/urls/ignore_case_param.adoc[ignore_case_param] ic = = {}) const noexcept;
----

[source,cpp,subs="verbatim,macros,-callouts"]
----
xref:boost/urls/params_encoded_base/iterator.adoc[iterator]
xref:boost/urls/params_encoded_base/find_last-0d.adoc[pass:[find_last]](
    xref:boost/urls/params_encoded_base/iterator.adoc[iterator] before,
    xref:boost/urls/pct_string_view.adoc[pct_string_view] key,
    xref:boost/urls/ignore_case_param.adoc[ignore_case_param] ic = = {}) const noexcept;
----
  
=== Description


This function examines the parameters
in the container to find a match for
the specified key, which may contain
percent escapes.
The comparison is performed as if all
escaped characters were decoded first.




The search starts from the last param
and proceeds backwards until either the
key is found or the beginning of the
range is reached, in which case `end()`
is returned.
[,cpp]
----
assert( url_view( "?first=John&last=Doe" ).encoded_params().find_last( "last" )->value == "Doe" );
----

=== Linear in `this-&gt;buffer().size()`.

=== Exceptions thrown on invalid input.


=== Exceptions

|===
| Name | Thrown on

| ``key``
| 
contains an invalid percent-encoding.

|===

=== Return Value


an iterator to the param



=== Parameters

|===
| Name | Description 

| *key*
| 
The key to match.
By default, a case-sensitive
comparison is used.

| *ic*
| 
An optional parameter. If
the value
xref:boost/urls/ignore_case.adoc[ignore_case]
is passed
here, the comparison is
case-insensitive.

| *before*
| 
One past the position
to begin the search from. This can
be `end()`.

|===




