Информация об изменениях

Сообщение Re[6]: Зачем просят перевернуть строку на интервью? от 12.10.2018 17:16

Изменено 13.10.2018 8:27 Somescout

Re[6]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Nuzhny, Вы писали:

N>Вот тут нельзя не сказать про достоинства такого языка, как С++:

N>
N>template<class BidirIt>
N>void reverse(BidirIt first, BidirIt last)
N>{
N>    while ((first != last) && (first != --last)) {
N>        std::iter_swap(first++, last);
N>    }
N>}
N>


Что-то смотрю я на этот код, и кажется мне что он будет работать только с null-terminated string. А на произвольной подстроке облажается.
Re[6]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Nuzhny, Вы писали:

Что-то смотрю я на этот код, и кажется мне что он будет работать только с null-terminated string. А на произвольной подстроке облажается.

Несогласные: на вход функция принимает итераторы, которые могут находиться в любом состоянии, у функции нет контракта чтобы левый итератор был строго в начале строки, а правый — в конце. Соответственно для null-terminated string, либо если BiDirectionalIterator инициализирован за концом обычной строки — всё отработает нормально. Но в произвольном случае будет ошибка. Если не прав — с интересом выслушаю вашу версию.