2012-03-14 2 views
4

Что такое обоснование для имени метода push_back в C++ std::vector? Например, существует ли начало стека (push - обычная операция стека)? Была ли существовавшая ранее библиотека, которая использовала эти термины для добавления в последовательность?Что такое этимология push_back в C++?

Помимо общих терминов, другие интерфейсы используют как append и add, insert_end, казалось бы, более внутренне самосогласованной (хотя front и back существуют в другом месте).

+0

std :: vector имеет 'push_front'? –

+5

Что бы вы назвали 'pop_back', если вы использовали' append' для 'push_back'? 'Depend'? –

+0

Спасибо @Jesse. Я должен думать о push_front, чтобы помнить, как разбирать push_back, и забыл, что push_front не находится в векторе. Удаленный push_front из Q. – xan

ответ

9

Как вы упомянули, push и pop являются общими именами для операций стека. Причина в том, что это не только push и pop, так это то, что он может быть совместим с другими контейнерами. std::vector только реализует push_back и pop_back, но есть также push_front и pop_front в, например, std::list. Наличие согласованных имен полезно при написании общих функций.

+1

+1 для * согласованных имен * будь то общие функции или программисты мозга, последовательное именование хорошо. –

+0

Меня больше интересовало, почему push и pop для вектора (или списка), но я не просил хорошо. – xan

0

Я бы предположил, что это из-за этих методов, облегчающих использование std::vector в качестве стека --- если вы все это push_front(foo) и pop_front() (или обратно эквивалент), у вас есть стек.

+0

'std :: vector' не имеет операций' push_front' и 'pop_front' (комитет решил упростить, было бы возможно эффективно использовать 4-й член) –

Смежные вопросы