Использование std в C++ (Пара вопросов по синтаксису)
Модератор: Модераторы разделов
-
- Сообщения: 80
- ОС: Debian
Использование std в C++
Покажите, пожалуйста, простой пример работы со стеком. Например поместить в него пару чисел, а потом вывести.
-
- Сообщения: 80
- ОС: Debian
Re: Использование std в C++
Код: Выделить всё
stack<int> st1;
st1.push(10);
cout << st1.top();
Так. Но это только для одного элемента. А если несколько?
-
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Использование std в C++
А что вам нужно? Доступ по индексу? Так зачем тогда стек?
P.S. По большому счёту стек должен предоставлять push(), pop(), top(). Остальное уже доп. возможности.
В дисгармонии со вселенной.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Использование std в C++
Код: Выделить всё
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
int x = s.top();
s.pop();
int y = s.top();
s.pop();
int z = s.top();
s.pop();
cout<<x<<y<<z<<endl;
вывод 321
-
- Сообщения: 80
- ОС: Debian
Re: Использование std в C++
Спасибо за ответы по стеку.
Не поможите ли зазобраться ещё с set? Хочу поместить в него данные пользовательского класса, никак не получается.
Вот класс:
Ну и собственно сама програмка:
С темже stack прекравно заработала, только пришлось перегрузить operator<< для вывода.
Не поможите ли зазобраться ещё с set? Хочу поместить в него данные пользовательского класса, никак не получается.
Вот класс:
Код: Выделить всё
class kvitansion
{
int number;
int date;
float summ;
public:
kvitansion();
kvitansion(int,int,float);
kvitansion(const kvitansion&);
~kvitansion();
void set(int,int,float);
void setnumber(int);
void setdate();
void setsumm();
void show();
int getnumber();
int getdate();
float getsumm();
};
Ну и собственно сама програмка:
Код: Выделить всё
#include <iostream>
#include <set>
#include "kvitansion.h"
using namespace std;
int main()
{
set<kvitansion> container;
set<kvitansion>::iterator iter;
container.insert(perem1);
return 0;
}
С темже stack прекравно заработала, только пришлось перегрузить operator<< для вывода.
-
- Сообщения: 33
- ОС: FreeBSD, Ubuntu, Debian
Re: Использование std в C++
Наверное операторы сравнения какие-то нужны
-
- Сообщения: 149
- ОС: SuSE Linux
-
- Сообщения: 33
- ОС: FreeBSD, Ubuntu, Debian
Re: Использование std в C++
Повторяю, чтобы заработало с классом kvitansion (а не указателем на него) нужно, чтобы у класса был определен оператор сравнения, а именно "<".
Стандартная библиотека шаблонов
Стандартная библиотека шаблонов
-
- Сообщения: 80
- ОС: Debian
Re: Использование std в C++
После перегрузки < и () всё заработало.
Осталось только с выводом разобраться, но это уже не сложно.
Код: Выделить всё
bool kvitansion::operator<(kvitansion one) const
{
bool result=false;
if (number<one.number) {result=true;};
return result;
}
bool kvitansion::operator()(kvitansion one, kvitansion two)
{
return one.getnumber() < two.getnumber();
}
Осталось только с выводом разобраться, но это уже не сложно.