stack из STL (Как получить доступ к произвольному элементу?)

Модератор: Модераторы разделов

Аватара пользователя
KOT
Сообщения: 21

stack из STL

Сообщение KOT »

Как получить доступ к произвольному элементу стека
пример стека stack <int>
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: stack из STL

Сообщение serzh-z »

KOT писал(а):
25.03.2006 19:12
Как получить доступ к произвольному элементу стека
пример стека stack <int>


Если бы к произвольному элементу стека можно было получить доступ, то это уже был бы не стек. Для произвольного доступа к элементам контейнера следует использовать вектор или дек (std::vector, std::deque).
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: stack из STL

Сообщение edoc_modnar »

STL страшно развращает.
А векторы все-таки больно тормозные...
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
KOT
Сообщения: 21

Re: stack из STL

Сообщение KOT »

Стек работает по принципу первый пришел последний уйдешь. Магазин работает также, но в отличии от стека у магазина можно читать только из верхушки, а у стека можно читать но нельзя удалять любой элемент, удалять только из верхушки. random_code, ты ассемблере писал?
К томуже вектор это не стек, а обычный массив. А дек это двухсторонний магазин.
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: stack из STL

Сообщение edoc_modnar »

KOT
Прикинь, я когда-то даже ручкой на бумажке писал. Вам, крутым ассемблерщикам, такое и не снилось.
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

Сообщение Asgard »

К томуже вектор это не стек, а обычный массив.

ну не обычный, а расширяемый ;)
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
KOT
Сообщения: 21

Re: stack из STL

Сообщение KOT »

random_code писал(а):
25.03.2006 20:42
KOT
Прикинь, я когда-то даже ручкой на бумажке писал. Вам, крутым ассемблерщикам, такое и не снилось.
STL это тебе не ассемблер. И зачем дурацкие вопросы задавать, если сам без труда можешь найти на них ответ?

random_code, не кипятись. Мы не для этого здесь собраемся. Мой вопрос для человека хорошо знающего STL, а для тех кто разбирается в структурах.
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: stack из STL

Сообщение Asgard »

эх.
короче говоря, доступ к произвольному элементу стека в stl получить нельзя.
если требуется извлечь заданный элемент из стека, то делается это исключительно методом тупого перебора.
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
KOT
Сообщения: 21

Re: stack из STL

Сообщение KOT »

Asgard спасибо.
тема закрыта
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: stack из STL

Сообщение oav »

KOT писал(а):
25.03.2006 21:04
Asgard спасибо.
тема закрыта

Уважаемый, перед тем как задавать такие вопросы, ведь можно было хотя-бы посмотреть что такое 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(); }
};


Неужели это так трудно. И личшнего флейма бы не было... :blink:
Надеюсь решение как сделать произвольный доступ к элементу видно?
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: stack из STL

Сообщение Zeus »

Надеюсь решение как сделать произвольный доступ к элементу видно?

Э-э... и как?
Это такой намёк, на pop...pop...pop... ?
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: stack из STL

Сообщение oav »

Zeus писал(а):
27.03.2006 10:32

Надеюсь решение как сделать произвольный доступ к элементу видно?

Э-э... и как?
Это такой намёк, на pop...pop...pop... ?

std::stack - это просто декоратор стека для любого реального контейнера. Ты можешь соотв. или относледоваться от него и дать доступ к защещенному контейнеру или написать свой, что имхо способ лучше,т.к. это уже не совсем стек.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: stack из STL

Сообщение Zeus »

oav писал(а):
27.03.2006 11:01
Zeus писал(а):
27.03.2006 10:32


Надеюсь решение как сделать произвольный доступ к элементу видно?

Э-э... и как?
Это такой намёк, на pop...pop...pop... ?

std::stack - это просто декоратор стека для любого реального контейнера. Ты можешь соотв. или относледоваться от него и дать доступ к защещенному контейнеру или написать свой, что имхо способ лучше,т.к. это уже не совсем стек.

А-а, отнасле-едоваться... Ну да. Это способ. Не догадался.
Только это будет уже не stl::stack<> :)
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: stack из STL

Сообщение flook »

Люди, вы чего? Если вам нужно искать где-то произвольный элемент, то этож сколько курить надо, чтобы додуматься для этого стек использовать? :blink:
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: stack из STL

Сообщение Zeus »

flook писал(а):
27.03.2006 11:46
Люди, вы чего? Если вам нужно искать где-то произвольный элемент, то этож сколько курить надо, чтобы додуматься для этого стек использовать? :blink:

Ну ты ж там указатель на функцию класса пытаешься заполучить.
Почему ж и нам не поизвращаться :)
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: stack из STL

Сообщение flook »

Zeus писал(а):
27.03.2006 11:49
Ну ты ж там указатель на функцию класса пытаешься заполучить.
Почему ж и нам не поизвращаться :)

Я предлагал решить головоломку (ох как я устал это повторять <_< )
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
d_Sun
Сообщения: 291

Re: stack из STL

Сообщение d_Sun »

flook писал(а):
27.03.2006 11:50
Zeus писал(а):
27.03.2006 11:49

Ну ты ж там указатель на функцию класса пытаешься заполучить.
Почему ж и нам не поизвращаться :)

Я предлагал решить головоломку (ох как я устал это повторять <_< )


Угу. ИМХО - решение головоломки by flook не такое извращение, как наследоваться от stack, что бы получить доступ к произвольному элементу :)
Моя подпись сильно длинная :)
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: stack из STL

Сообщение oav »

Zeus писал(а):
27.03.2006 11:49
flook писал(а):
27.03.2006 11:46

Люди, вы чего? Если вам нужно искать где-то произвольный элемент, то этож сколько курить надо, чтобы додуматься для этого стек использовать? :blink:

Ну ты ж там указатель на функцию класса пытаешься заполучить.
Почему ж и нам не поизвращаться :)

юзай дек и не извращайся, программеров любят за производительность - они дорого обходятся
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: stack из STL

Сообщение Zeus »

flook писал(а):
27.03.2006 11:50
Zeus писал(а):
27.03.2006 11:49

Ну ты ж там указатель на функцию класса пытаешься заполучить.
Почему ж и нам не поизвращаться :)

Я предлагал решить головоломку (ох как я устал это повторять <_< )

Дык, думаю большинство присутствующих и ЭТОТ вопрос рассматривают исключительно в таком же ракурсе :)
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: stack из STL

Сообщение flook »

Zeus писал(а):
27.03.2006 12:06
Дык, думаю большинство присутствующих и ЭТОТ вопрос рассматривают исключительно в таком же ракурсе :)

Ага, только почему-то мою задачю решали as is, а к этой всякие заменители предлагают.
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: stack из STL

Сообщение oav »

Zeus писал(а):
27.03.2006 11:04
А-а, отнасле-едоваться... Ну да. Это способ. Не догадался.
Только это будет уже не stl::stack<> :)


Если в определении класса видишь protected члены или функции - то это первый признак того, что класс спроектирован как базовый. А это что это будет не std::stack - вот она, мощь языка, тебе понадобился _почти_ стек, но не стек - и ты уже обязан его обозвать по-другому - и любой, кто будет читать твой код не введется в заблуждение. А то прикинь, я читаю твой код со стеком и точно уверен что он не может меняться. а бац! где-то внутрях ты его меняешь - куча времени в ведро, а о тебе соотв. мнение как о спеце.
Спасибо сказали: