Constructor
Synopsis
Description
This function creates a new segments_encoded_view from a pair of iterators referring to elements of another encoded segments view. The resulting view references the same underlying character buffer as the original.
The constructed view preserves the original absolute flag when first selects the first segment and otherwise produces an absolute subview: if the source path is relative and first == ps.begin() the new view is relative, and in every other case the subview is absolute with the separator immediately preceding *first retained at the front. This ensures the underlying text can be reconstructed by concatenating the buffers of adjacent subviews.
The caller is responsible for ensuring that the lifetime of the original buffer extends until the constructed view is no longer referenced.
Example
segments_encoded_view ps( "/path/to/file.txt" );
segments_encoded_view sub(
std::next(ps.begin()),
ps.end());
segments_encoded_view first_half(
ps.begin(),
std::next(ps.begin()));
// sub represents "/to/file.txt"
std::string combined(
first_half.buffer().data(),
first_half.buffer().size());
combined.append(
sub.buffer().data(),
sub.buffer().size());
BOOST_ASSERT(combined == ps.buffer());
Preconditions
The iterators must be valid and belong to the same segments_encoded_view.
Postconditions
sub.buffer() references characters in the original ps.buffer().
Complexity
Constant
Exception Safety
Throws nothing.
Parameters
| Name | Description |
|---|---|
first |
The beginning iterator. |
last |
The ending iterator. |
Created with MrDocs