У меня есть двумерный карта, которую я объявленная так:C++ 11 - Range основы для петли на двухмерную карте
typedef std::map<std::string, std::map<std::string, Objective>> objectives_t;
Я хочу, чтобы сохранить содержимое этой 2D-карты в файл.
Так что я пытался что-то вроде этого, вдохновленный какой-то код, который я нашел в Интернете:
for (auto const &subject : m_objectives) {
for (auto const &objective : m_objectives[subject.first]) {
//Print the objective
}
}
Но, конечно, это не работает. Как мне это сделать? Я не совсем уверен, что является предметом и объективностью (это некоторые итераторы?).
На второй строке, я получаю:
error: passing 'const objectives_t {aka const std::map<std::basic_string<char>, std::map<std::basic_string<char>, Objective> >}' as 'this' argument of 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::basic_string<char>; _Tp = std::map<std::basic_string<char>, Objective>; _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, std::map<std::basic_string<char>, Obj|
'для (авто const и цель: subject.second)' –
Вы слишком глубоко выкопали. Сначала поймите простую «карту» и убедитесь, что вы можете писать циклы на основе диапазона, чтобы перебирать ее. –
Возможно, проанализируйте синтаксис и семантику цикла, основанного на диапазонах, вместо того, чтобы опробовать случайный код. – juanchopanza