Wie deklarieren und initialisieren Sie in C ++ 17 einen Vektor von Paaren (oder Tupeln) mit einem optionalen Element?
std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
{2, false},
{3, nullptr}};
Ich habe ein Paar, bei dem das zweite Element null / optional sein kann.
std::piecewise_construct
kann auch interessante Alternativen bieten.reset
.Antworten:
Sie suchen
std::nullopt
stattnullptr
.quelle
std::
so? Warum nicht einfachusing std::vector
und Freunde, damit du einfach schreiben kannstvector<pair<int, optional<bool>>
? Liest viel vernünftigervector
,pair
,optional
usw. Ich bin in dieser Zeile mit. Das Einfügen des Namespace inline sagt mir eindeutig, woher diese Funktion kommt und was sie tut. Die Leitung ist in sich geschlossen. Dies gilt insbesondere für größere Projekte (da Namespace-Konflikte vollständig vermieden werden), aber auch für kurze Codebeispiele.std
?arg
,count
,find
,size
std::
völlig unauffällig. Es wäre anders, wenn der Name des Namespace viel länger wäre.Oder verwenden Sie einfach die Standardkonstruktion:
quelle
std::nullopt
kommuniziert Absicht besser.