Как инициализировать вектор пар C ++ 17 с необязательным элементом - PullRequest
34 голосов
/ 11 марта 2020

В C ++ 17, как вы объявляете и инициализируете вектор пар (или кортежей) с необязательным элементом?

    std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
                                                           {2, false}, 
                                                           {3, nullptr}};

У меня есть пара, где второй элемент может быть нулевым / необязательным .

Ответы [ 2 ]

49 голосов
/ 11 марта 2020

Вы ищете std::nullopt вместо nullptr.

std::vector<std::pair<int, std::optional<bool> > > vec1 =
  { {1, true}, {2,false}, {3,std::nullopt} };
24 голосов
/ 11 марта 2020

Или простая конструкция по умолчанию:

std::vector<std::pair<int, std::optional<bool>>> vec1 {
    {1, true}, {2,false}, {3,{}}
};
...