Подтвердить что ты не робот

Для чего используется std::vector:: front()?

Извините, если это было задано раньше, но мне интересно, что такое std::vector::front().

Есть ли причина для использования, например. myvector.front(), а не myvector[0] или myvector.at(0)?

4b9b3361

Ответ 1

Некоторые из общих алгоритмов, которые также работают над списками, используют его.

Это пример общего принципа: если вы предоставляете аксессуры для всей семантики, которую вы поддерживаете, а не только для поддержки, которую вы поддерживаете, ее проще писать в общем и, следовательно, проще повторно использовать код.

Ответ 2

Если тип myvector изменяется на другой тип данных, который не индексируется, например список, вам не придется менять код, который обращается к передней части контейнера.

Ответ 3

Выполнение этого обеспечивает нечто, называемое статическим полиморфизмом.

Скажем, я написал алгоритм с использованием класса очереди. Он имеет функцию front() для получения следующего элемента очереди и функцию enqueue() для добавления в конец очереди. Теперь скажем, что я обнаружил, что этот класс очереди написан плохо и очень медленно, и я предпочел бы использовать std::vector, который намного быстрее (я знаю, что std:: queue, это просто пример). Если бы единственный способ получить первый элемент std::vector был с v [0], мне пришлось бы пройти через мой код и заменить все мои вызовы на front() на [0]. Но, реализуя front(), std::vector теперь может быть заменой для моего класса очереди. Единственным кодом, который мне нужно изменить, является тип контейнера в моем алгоритме.