stack из STL (Как получить доступ к произвольному элементу?)
Модератор: Модераторы разделов
-
KOT
- Сообщения: 21
stack из STL
Как получить доступ к произвольному элементу стека
пример стека stack <int>
пример стека stack <int>
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: stack из STL
Если бы к произвольному элементу стека можно было получить доступ, то это уже был бы не стек. Для произвольного доступа к элементам контейнера следует использовать вектор или дек (std::vector, std::deque).
-
edoc_modnar
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: stack из STL
STL страшно развращает.
А векторы все-таки больно тормозные...
А векторы все-таки больно тормозные...
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
-
KOT
- Сообщения: 21
Re: stack из STL
Стек работает по принципу первый пришел последний уйдешь. Магазин работает также, но в отличии от стека у магазина можно читать только из верхушки, а у стека можно читать но нельзя удалять любой элемент, удалять только из верхушки. random_code, ты ассемблере писал?
К томуже вектор это не стек, а обычный массив. А дек это двухсторонний магазин.
К томуже вектор это не стек, а обычный массив. А дек это двухсторонний магазин.
-
edoc_modnar
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: stack из STL
KOT
Прикинь, я когда-то даже ручкой на бумажке писал. Вам, крутым ассемблерщикам, такое и не снилось.
STL это тебе не ассемблер. И зачем дурацкие вопросы задавать, если сам без труда можешь найти на них ответ?
Прикинь, я когда-то даже ручкой на бумажке писал. Вам, крутым ассемблерщикам, такое и не снилось.
STL это тебе не ассемблер. И зачем дурацкие вопросы задавать, если сам без труда можешь найти на них ответ?
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: stack из STL
К томуже вектор это не стек, а обычный массив.
ну не обычный, а расширяемый
-
KOT
- Сообщения: 21
Re: stack из STL
random_code писал(а): ↑25.03.2006 20:42KOT
Прикинь, я когда-то даже ручкой на бумажке писал. Вам, крутым ассемблерщикам, такое и не снилось.
STL это тебе не ассемблер. И зачем дурацкие вопросы задавать, если сам без труда можешь найти на них ответ?
random_code, не кипятись. Мы не для этого здесь собраемся. Мой вопрос для человека хорошо знающего STL, а для тех кто разбирается в структурах.
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: stack из STL
эх.
короче говоря, доступ к произвольному элементу стека в stl получить нельзя.
если требуется извлечь заданный элемент из стека, то делается это исключительно методом тупого перебора.
короче говоря, доступ к произвольному элементу стека в stl получить нельзя.
если требуется извлечь заданный элемент из стека, то делается это исключительно методом тупого перебора.
-
oav
- Бывший модератор
- Сообщения: 296
Re: stack из STL
Уважаемый, перед тем как задавать такие вопросы, ведь можно было хотя-бы посмотреть что такое std::stack?
Код: Выделить всё
namespace std {
template <class T, class Container = deque<T> >
class stack {
public:
typedef typename Container::value_type value_type;
typedef typename Container::reference reference;
typedef typename Container::const_reference const_reference;
typedef typename Container::size_type size_type;
typedef Container container_type;
protected:
Container c;
public:
explicit stack(const Container& = Container());
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference top() { return c.back(); }
const_reference top() const { return c.back(); }
void push(const value_type& x) { c.push_back(x); }
void pop() { c.pop_back(); }
};Неужели это так трудно. И личшнего флейма бы не было...
Надеюсь решение как сделать произвольный доступ к элементу видно?
-
Zeus
- Сообщения: 694
Re: stack из STL
Надеюсь решение как сделать произвольный доступ к элементу видно?
Э-э... и как?
Это такой намёк, на pop...pop...pop... ?
-
oav
- Бывший модератор
- Сообщения: 296
Re: stack из STL
std::stack - это просто декоратор стека для любого реального контейнера. Ты можешь соотв. или относледоваться от него и дать доступ к защещенному контейнеру или написать свой, что имхо способ лучше,т.к. это уже не совсем стек.
-
Zeus
- Сообщения: 694
Re: stack из STL
А-а, отнасле-едоваться... Ну да. Это способ. Не догадался.
Только это будет уже не stl::stack<>
-
flook
- Сообщения: 585
- Статус: Просто flook
Re: stack из STL
Люди, вы чего? Если вам нужно искать где-то произвольный элемент, то этож сколько курить надо, чтобы додуматься для этого стек использовать? 
В каждом из нас спит гений... и с каждым днем все крепче...
-
Zeus
- Сообщения: 694
-
flook
- Сообщения: 585
- Статус: Просто flook
Re: stack из STL
Я предлагал решить головоломку (ох как я устал это повторять <_< )
В каждом из нас спит гений... и с каждым днем все крепче...
-
d_Sun
- Сообщения: 291
Re: stack из STL
Угу. ИМХО - решение головоломки by flook не такое извращение, как наследоваться от stack, что бы получить доступ к произвольному элементу
Моя подпись сильно длинная :)
-
oav
- Бывший модератор
- Сообщения: 296
Re: stack из STL
-
Zeus
- Сообщения: 694
Re: stack из STL
Дык, думаю большинство присутствующих и ЭТОТ вопрос рассматривают исключительно в таком же ракурсе
-
flook
- Сообщения: 585
- Статус: Просто flook
Re: stack из STL
Ага, только почему-то мою задачю решали as is, а к этой всякие заменители предлагают.
В каждом из нас спит гений... и с каждым днем все крепче...
-
oav
- Бывший модератор
- Сообщения: 296
Re: stack из STL
Если в определении класса видишь protected члены или функции - то это первый признак того, что класс спроектирован как базовый. А это что это будет не std::stack - вот она, мощь языка, тебе понадобился _почти_ стек, но не стек - и ты уже обязан его обозвать по-другому - и любой, кто будет читать твой код не введется в заблуждение. А то прикинь, я читаю твой код со стеком и точно уверен что он не может меняться. а бац! где-то внутрях ты его меняешь - куча времени в ведро, а о тебе соотв. мнение как о спеце.