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

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

Восстановить пароль Регистрация
 
TheSoul
1 / 1 / 0
Регистрация: 29.12.2010
Сообщений: 17
09.09.2011, 00:00     Можно ли на базе массива реализовать контейнер #1
Можно ли на базе массива реализовать контейнер? Если да, то как это будет происходить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 00:00     Можно ли на базе массива реализовать контейнер
Посмотрите здесь:

C++ Реализовать очередь на базе односвязного списка
C++ Реализовать упрощенный контейнер "вектор"
Контейнер map: реализовать проверку на уникальность ключа C++
И снова STL. Реализовать сохранение массива в файл, чтоб можно было загружать данные C++
C++ Реализовать классы фигур и поместить в контейнер на основе двунаправленного линейного списка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Go0gle
17 / 17 / 1
Регистрация: 08.09.2011
Сообщений: 22
09.09.2011, 00:06     Можно ли на базе массива реализовать контейнер #2
Можно, используя класс и шаблоны. А зачем Вам? Вроде как проще воспользоваться готовыми...
TheSoul
1 / 1 / 0
Регистрация: 29.12.2010
Сообщений: 17
09.09.2011, 00:17  [ТС]     Можно ли на базе массива реализовать контейнер #3
Задание в университете. Необходимо разобраться в работе контейнера и хотя бы частично в си билдере реализовать его функции. Ну там добавление, удаление элементов. Вообще не догоняю.
Go0gle
17 / 17 / 1
Регистрация: 08.09.2011
Сообщений: 22
09.09.2011, 01:27     Можно ли на базе массива реализовать контейнер #4
Как вариант гляньте вот этот пример. Он в какой-то книги описан очень подробно, только вот не помню в какой, извините... Описал, как мог..

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

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;
}
Реализация стека - один из самых простых, но по его аналогии Вы можете создать и более сложный контейнер.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
09.09.2011, 01:27     Можно ли на базе массива реализовать контейнер #5
В книге Л.Аммерааль - STL для программистов на C++ есть пример реализации контейнера блок.
Yandex
Объявления
09.09.2011, 01:27     Можно ли на базе массива реализовать контейнер
Ответ Создать тему
Опции темы

Текущее время: 12:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru