[#absl-Cord-CharIterator]
= xref:absl.adoc[absl]::xref:absl/Cord.adoc[Cord]::CharIterator
:relfileprefix: ../../
:mrdocs:

Iterates over the constituent characters of a `Cord`&period;

== Synopsis

Declared in `&lt;absl&sol;strings&sol;cord&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class CharIterator;
----

== Description

A `Cord&colon;&colon;CharIterator` allows iteration over the constituent characters of a `Cord`&period;

Generally, you do not instantiate a `Cord&colon;&colon;CharIterator` directly&semi; instead, you create one implicitly through use of the `Cord&colon;&colon;Chars()` member function&period;

A `Cord&colon;&colon;CharIterator` has the following properties&colon;

&ast; The iterator is invalidated after any non&hyphen;const operation on the Cord object over which it iterates&period; &ast; Two `CharIterator` objects can be compared equal if and only if they remain valid and iterate over the same Cord&period; &ast; The iterator keeps state that can grow for Cords that contain many nodes and are imbalanced due to sharing&period; Prefer to pass this type by const reference instead of by value&period; &ast; This type cannot act as a forward iterator because a `Cord` can reuse sections of memory&period; This fact violates the requirement for forward iterators to compare equal if dereferencing them returns the same object&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:absl/Cord/CharIterator/difference_type.adoc[`difference&lowbar;type`] 
| The type used to represent distances between iterators&period;
| xref:absl/Cord/CharIterator/iterator_category.adoc[`iterator&lowbar;category`] 
| The iterator category tag (input iterator)&period;
| xref:absl/Cord/CharIterator/pointer.adoc[`pointer`] 
| The pointer type for the iterated values&period;
| xref:absl/Cord/CharIterator/reference.adoc[`reference`] 
| The reference type for the iterated values&period;
| xref:absl/Cord/CharIterator/value_type.adoc[`value&lowbar;type`] 
| The type of the values iterated over&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:absl/Cord/CharIterator/2constructor.adoc[`CharIterator`]         [.small]#[constructor]#
| Constructs an iterator in the end &sol; singular state&period;
| xref:absl/Cord/CharIterator/operator_star.adoc[`operator&ast;`] 
| Dereferences the iterator&period;
| xref:absl/Cord/CharIterator/operator_inc-09.adoc[`operator&plus;&plus;`] 
| Advances the iterator to the next character&period;
| xref:absl/Cord/CharIterator/operator_eq.adoc[`operator&equals;&equals;`] 
| Compares two iterators for equality&period;
| xref:absl/Cord/CharIterator/operator_not_eq.adoc[`operator!&equals;`] 
| Compares two iterators for inequality&period;
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:absl/Cord.adoc[absl::Cord]`
| A sequence of characters stored as a tree of buffers&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
