Форум программистов, компьютерный форум CyberForum.ru

Можно ли на базе массива реализовать контейнер - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнить двумерный массив следующим образом: 1 24 25 ... 120 2 ... 26 ... 119 http://www.cyberforum.ru/cpp-beginners/thread349516.html
Заполнить двумерный массив следующим образом: 1 24 25 ... 120 2 ... 26 ... 119 ... ... ... ... 1 14 ... ... 110 12 13 36 ... 109
C++ Перенести первые к элементов в конец дан одномерный массив М из 28 элементов. Перенести первые к элементов в конец: М, М,..., М,М,..., М http://www.cyberforum.ru/cpp-beginners/thread349515.html
C++ Составить программу, которая меняет местами две любые строки массива
Дан двумерный массив. Составить программу, которая меняет местами две любые строки массива.
C++ Вывести в файл используя fin
Здравствуйте! Считываю что-то через fin>>! Как мне вывести результат в файл!? Если cout то выводить в экран консоли, а как вывести в файл? Заранее благодарен! Добавлено через 1 минуту Так подключаю файл input ifstream fin ("input.txt");
C++ Использование dll http://www.cyberforum.ru/cpp-beginners/thread349508.html
Доброго времени суток. Создал свою dll с единственной функцией Nod. Проблемма в том что вызов GetProcAddress(MyDLL,"Nod") не работает. Порывшись нашел что функция называется _Nod@8. В чем дело??
C++ Глупый вопрос (возведение в квадрат) Всем привет. Почему то не работает следующая элементарныя строчка кода. Значения y получаются отрицательными, например около -30000, хотя x и y коллкблятся примерно от 1000 до 2000. Заранее спасибо y = (x-y)*(x-y); подробнее

Показать сообщение отдельно
Go0gle
17 / 17 / 1
Регистрация: 08.09.2011
Сообщений: 22
09.09.2011, 01:27     Можно ли на базе массива реализовать контейнер
Как вариант гляньте вот этот пример. Он в какой-то книги описан очень подробно, только вот не помню в какой, извините... Описал, как мог..

Наш заголовочный файл :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class T>
class Stack
{
    public:
        Stack(int = 5 ) ;               //Если размер стека не указан, полагаем его равным 5
 
        ~Stack() { delete []pStack ; }
 
        int push(const T&);                            //Метод для добавления элементов в стек
        int pop(T&);                                   //Метод для получения элементов из стека
        int isEmpty() const { return top == -1 ;}       // true - стек пустой, false - стек не пустой
        int isFull() const  { return top == size -1; }  // true - стек полон, false  - есть место в стеке
 
 
    private:
        int size ;      //Размер стека
        int top;        // Вершина стека
         T* pStack;     //Указатель на стек
};
Наш файл реализации :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "Stack.h"
 
 
template <class T>
Stack<T>::Stack(int s)
{
    size = s > 0 && s < 1000 ? s: 5 ; //Если пользователь неочень, то размер стека равен по умолчанию
 
    top = -1 ;                 //Говорим , что стек пуст
    pStack = new T[size] ;     //Выдиляем память под обьекты стека
}
 
template <class T>
int Stack<T>::push(const T& item)
{
    if (!isFull() )             //Если есть место в стеке
    {
        pStack[++top] =item ;  // Помещаем элемент в стек
        return 1 ;             //Говорим, что операция завершилась успешно
    }
 
    return 0 ;                //Операция завершилась неудачно
}
 
 
template <class T>
int Stack<T>::pop(T &Value)
{
    if(!isEmpty() )         //Если стек не пуст
    {
        Value =pStack[top--] ;  //Забираем элемент из стека
        return 1 ;              //Говорим, что операция прошла успешно
    }
 
  return 0  ;                  // Неудачно
}

Тестовая среда :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "iostream"
 
#include "Stack.h"
 
using namespace std ;
 
int main()
{
 
Stack <int> intStack ;
 
    cout<<"Stack isEmpty : " << intStack.isEmpty() ;
    cout<<"Stack isFull : " <<intStack.isFull();
 
    intStack.push(12);
    intStack.push(15);
    intStack.push(12);
 
 
    return 0;
}
Реализация стека - один из самых простых, но по его аналогии Вы можете создать и более сложный контейнер.
 
Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru