◐ Shell
clean mode source ↗

std::raw_storage_iterator - cppreference.com

De cppreference.com

</tbody> <tbody class="t-dcl-rev "> </tbody><tbody>

Definido en el archivo de encabezado <memory>

template< class OutputIt, class T > class raw_storage_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void>;

(hasta C++17)

template< class OutputIt, class T > class raw_storage_iterator;

(desde C++17)
(en desuso)
(eliminado en C++20)

El iterador de salida std::raw_storage_iterator hace posible que los algoritmos estándar almacenen los resultados en la memoria no inicializada. Cada vez que el algoritmo escribe un objeto de tipo T en el iterador desreferenciado, el objeto se copia en la ubicación del almacenamiento no inicializado al que apunta el iterador. El parámetro de plantilla OutputIt es cualquier tipo que cumpla con los requisitos de OutputIterator y tiene operator* definido para devolver un objeto, para el cual {{c|operator&} } devuelve un objeto de tipo T*. Por lo general, el tipo T* se usa como OutputIt.

Requerimientos de tipo

Funciones miembro

Heredado de std::iterator

Member types

Miembro de tipo

Original:

Member type

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Definition
value_type void
difference_type void
pointer void
reference void
iterator_category std::output_iterator_tag

Ejemplo

#include <iostream>
#include <string>
#include <memory>
#include <algorithm>

int main()
{
    const std::string s[] = {"Esta", "es", "una", "prueba", "."};
    std::string* p = std::allocator<std::string>().allocate(5);
 
    std::copy(std::begin(s), std::end(s),
              std::raw_storage_iterator<std::string*, std::string>(p));
 
    for(std::string* i = p; i!=p+5; ++i) {
        std::cout << *i << '\n';
        i->~basic_string<char>();
    }
    std::allocator<std::string>().deallocate(p, 5);
}

Salida:

Véase también