En C ++ 17, ¿cómo declara e inicializa un vector de pares (o tuplas) con un elemento opcional?
std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
{2, false},
{3, nullptr}};
Tengo un par donde el segundo elemento puede ser nulo / opcional.
std::piecewise_construct
También puede proporcionar alternativas interesantes.reset
aquí.Respuestas:
Estás buscando en
std::nullopt
lugar denullptr
.fuente
std::
como este? ¿Por qué no solousing std::vector
y amigos, para que puedas escribirvector<pair<int, optional<bool>>
? Lee mucho más sanamentevector
,pair
,optional
, etc estoy usando en esta línea. La inclusión del espacio de nombres en línea me dice inequívocamente de dónde proviene esa función y qué hace; La línea es autónoma. Esto es especialmente cierto para proyectos más grandes (ya que evita los conflictos de espacio de nombres por completo), pero también es útil para ejemplos de código conciso.std
?arg
,count
,find
,size
std::
es totalmente discreto. Sería diferente si el nombre del espacio de nombres fuera mucho más largo.O uso simple construcción predeterminada:
fuente
std::nullopt
comunica mejor la intención.