Dalam C ++ 17, bagaimana Anda mendeklarasikan dan menginisialisasi vektor pasangan (atau tupel) dengan elemen opsional?
std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
{2, false},
{3, nullptr}};
Saya memiliki pasangan di mana elemen kedua mungkin nol / opsional.
std::piecewise_construct
juga bisa memberikan alternatif yang menarik.reset
sini.Jawaban:
Anda mencari
std::nullopt
bukannullptr
.sumber
std::
seperti ini? Mengapa tidak adilusing std::vector
dan berteman, sehingga Anda bisa menulisvector<pair<int, optional<bool>>
? Membaca jauh lebih warasvector
,pair
,optional
, dll saya menggunakan di baris ini. Termasuk inline namespace memberi tahu saya dengan jelas dari mana fungsi itu berasal dan apa fungsinya; barisnya mandiri. Ini terutama berlaku untuk proyek yang lebih besar (karena menghindari konflik namespace sepenuhnya), tetapi juga berguna untuk contoh kode ringkas.std
?arg
,count
,find
,size
std::
sama sekali tidak mengganggu . Akan berbeda jika nama namespace lebih panjang.Atau konstruksi standar penggunaan sederhana:
sumber
std::nullopt
maksud komunikasi lebih baik.