Я просто изучаю структуру данных графа. И я попал в такую ситуацию.
Я написал свой Graph
класс, такой как
template <char... Args>
class Graph{};
, где Args
типаchar
означает вершину моего Graph
.Однако, когда я хочу выполнить поиск в моем Графике, мне нужно вставить каждую вершину char
и ее индекс в Args
как std::pair<char,size_t>
в std::map<char,size_t>
. Что я сделал, так это то, что построил std::tuple
вроде
std::tuple<decltype(Args)...> t(Args...);
Тогда я хочу сделать вот так
for(size_t i =0;i<sizeof...(Args);++i)
Map.insert({0,std::get<i>(t)});
, что на карте означает std::map<size_t,char>
.Это, конечно, не работает, потому что i
, используемый в std::get<>
, не является constexpr
.Что я могу сделать сейчас, это вставить по карте одну за другой, например
Map.insert({0,std::get<0>(t)});
Map.insert({1,std::get<1>(t)});
Map.insert({2,std::get<2>(t)});
Но это не тот результат, которого я хочу. Так есть ли другие решения для меня?
Спасибо за любую помощь!