Medium-rare wrote: ↑12 Oct 2019 03:30
Мальчик-Одуванчик wrote: ↑11 Oct 2019 21:00
Так оно на коленке в любом виде будет непотребством.
Никто и не требует законченный "продукт".
А понимание принципов, как всё работает.
Там понимание как раз начинается на свойствах, присущх именно последовательным контейнерам.
В частности - на операторе прямого доступа [], поскольку нужно предусмотреть одну версию для случая a = v[ I ] и отличающуюся от неё версию для v[ I ] = a;
Даже если соискатель попробует реализовать вектор тупо в лоб через массив, то он с большой вероятностью срежется на реализации [].
Потому что трюк с определением двух форм этого оператора нужно просто тупо запомнить и как всякое мусорное знание оно на практике вообще не требуется.
А догадаться, во время стресса на интервью, как сотворить подобное непотребство, для большинства будет весьма проблематично.
Если же копнуть в сторону vectot<bool>, для реализации, предложенной интервьюируемым, то гарантированно получим непотребство.
И вот тут от соискателя потребуется аргументированно доказать, что идея с такой специализацией вообще непотребство сама по себе.
Что возможно, лишь когда оппонент специально интересовался или разбирал этот случай.
С одной стороны такое знание, в силу своей полной бесполезности, явно не даёт плюс ни в карму, ни на интервью, а с другой - без него не отбиться от наездов со специализацией самописного вектора для типа bool.
Вот и получается, что пример с вектором весьма неудачен как задача для написания шаблонного класса.
На мой взгляд, гораздо продуктивнее поговорить о практическом применении контейнеров в связке с итераторами и алгоритмами.
Возможно набросать шаблон контейнера в самом общем виде и определить какие методы и операторы понадобятся для его работы с алгоритмами.