Реализация карты интервалов ⇐ C++
Реализация карты интервалов
Я отправил заявку на позицию C++ в одну из IT-компаний. Мне прислали тестовое задание.
Задача — реализовать операцию назначения карты интервалов. Я отправил им свое решение, но оно не соответствовало второму требованию (правильное поведение). Они не дали никаких отзывов, кроме заявления о том, что мой код не прошел все их тесты. И теперь мне интересно, что я мог сделать не так. Конечно, перед отправкой решения я провел некоторое тестирование, и все тесты, которые я мог придумать, прошли успешно.
Теперь я не могу спать, не зная, где я могу все испортить.
Вот мой код:
void Assign (const K и keyBegin, const K и keyEnd, const V и val) { если (!(keyBegin секунда == значение) ++следующийИнтервал; иначе, если (nextInterval->first секунда; ++следующийИнтервал; вставленный1 = nextInterval = m_map.emplace_hint(nextInterval, keyEnd, nextValue); } пытаться { авто prevInterval = nextInterval; --prevInterval; if (keyBegin first) prevInterval = --m_map.upper_bound(keyBegin); if (!(prevInterval->секунда == значение)) { if (prevInterval->first Second == val) prevInterval = beforePrev; еще { автоматическая подсказка = m_map.erase(prevInterval); вставленный2 = prevInterval = m_map.emplace_hint(подсказка, keyBegin, val); } } } m_map.erase(++prevInterval, nextInterval); } ловить (...) { если (insert1 != m_map.end()) m_map.erase(вставлено1); если (insert2 != m_map.end()) m_map.erase(insert2); бросать; } } Можете ли вы помочь мне найти ошибку?
Я отправил заявку на позицию C++ в одну из IT-компаний. Мне прислали тестовое задание.
Задача — реализовать операцию назначения карты интервалов. Я отправил им свое решение, но оно не соответствовало второму требованию (правильное поведение). Они не дали никаких отзывов, кроме заявления о том, что мой код не прошел все их тесты. И теперь мне интересно, что я мог сделать не так. Конечно, перед отправкой решения я провел некоторое тестирование, и все тесты, которые я мог придумать, прошли успешно.
Теперь я не могу спать, не зная, где я могу все испортить.
Вот мой код:
void Assign (const K и keyBegin, const K и keyEnd, const V и val) { если (!(keyBegin секунда == значение) ++следующийИнтервал; иначе, если (nextInterval->first секунда; ++следующийИнтервал; вставленный1 = nextInterval = m_map.emplace_hint(nextInterval, keyEnd, nextValue); } пытаться { авто prevInterval = nextInterval; --prevInterval; if (keyBegin first) prevInterval = --m_map.upper_bound(keyBegin); if (!(prevInterval->секунда == значение)) { if (prevInterval->first Second == val) prevInterval = beforePrev; еще { автоматическая подсказка = m_map.erase(prevInterval); вставленный2 = prevInterval = m_map.emplace_hint(подсказка, keyBegin, val); } } } m_map.erase(++prevInterval, nextInterval); } ловить (...) { если (insert1 != m_map.end()) m_map.erase(вставлено1); если (insert2 != m_map.end()) m_map.erase(insert2); бросать; } } Можете ли вы помочь мне найти ошибку?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение