No C ++ 17, como você declara e inicializa um vetor de pares (ou tuplas) com um elemento opcional?
std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
{2, false},
{3, nullptr}};
Eu tenho um par em que o segundo elemento pode ser nulo / opcional.
std::piecewise_construct
também pode fornecer alternativas interessantes.reset
aqui.Respostas:
Você está procurando em
std::nullopt
vez denullptr
.fonte
std::
como este? Por que não apenasusing std::vector
e amigos, para que você pudesse escrevervector<pair<int, optional<bool>>
? Lê com muito mais prudênciavector
,pair
,optional
, etc. Eu estou usando nesta linha. Incluir o espaço para nome inline me diz de forma inequívoca de onde vem essa função e o que ela faz; a linha é independente. Isso é especialmente verdadeiro para projetos maiores (pois evita completamente conflitos de espaço para nome), mas também é útil para exemplos concisos de código.std
?arg
,count
,find
,size
std::
é totalmente discreto. Seria diferente se o nome do espaço para nome fosse muito maior.Ou construção padrão de uso simples:
fonte
std::nullopt
comunica melhor a intenção.