Как в сообщении об ошибке говорится, что val
- это тип std::map<ll, std::vector<int>>
, не имеет первого и второго члена, скорее, подчеркивание std::pair<const ll, std::vector<int>>
имеет их.
Значение вашего первого для l oop. (при условии, что ll
является псевдонимом типа для long long
)
for (auto i : val) // auto = std::pair<const ll, std::vector<int>>
для этого у вас должно быть
for (const auto& i : val) // auto = std::pair<const ll, std::vector<int>>
{
// code
for (auto j : i.second) // auto = std::vector<int>
// code
}
Или если вы используете c ++ 17 , вы можете использовать структурированное связывание для более интуитивного
for (const auto&[key, valVector] : val)
// ^^^^^^^^^^^^^^^^
{
std::cout << "Element Indexes\n" << key << " ----> ";
for (auto j : valVector)
std::cout << j << "\n";
}
Помните, VLA не являются частью стандарта C ++ , предпочтительнее использовать std::vector
вместо.
std::vector<ll> arr(n);