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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TheSoul
1 / 1 / 0
Регистрация: 29.12.2010
Сообщений: 17
#1

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

09.09.2011, 00:00. Просмотров 562. Ответов 4
Метки нет (Все метки)

Можно ли на базе массива реализовать контейнер? Если да, то как это будет происходить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 00:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли на базе массива реализовать контейнер (C++):

Реализовать контейнер multiset к классу - C++
Здравствуйте у меня есть класс и мне надо реализовать контейнер multiset к этому классу. Проблема в том что я не могу понять особенности...

Реализовать контейнер данных наподобие файловой системы - C++
Требуется реализовать контейнер данных наподобие файловой системы с возможностью создавать и уничтожать файлы и читать/записывать в них...

Контейнер map: реализовать проверку на уникальность ключа - C++
Приветствую форумчан, имеется контейнер map с элементами struct Elemnts { int key; char *word; }; Главное требование контейнера...

Какой ассоциативный контейнер выбрать? И как реализовать в нем чтение из файла? - C++
Вот сама задание: Текстовый файл содержит следующую информацию: координату точки и угол наклона прямой, проходящей через эту точку....

Реализовать классы фигур и поместить в контейнер на основе двунаправленного линейного списка - C++
Всем доброе утро:) задача: Плоская геометрическая фигура:1. Круг (целочисленные координата центра окружности, радиус) ...

И снова STL. Реализовать сохранение массива в файл, чтоб можно было загружать данные - C++
Имеется контейнер vector объектов класса с полями разного типа, необходимо реализовать сохранение массива в файл, чтоб можно было загружать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Go0gle
18 / 18 / 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
18 / 18 / 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++ есть пример реализации контейнера блок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2011, 01:27
Привет! Вот еще темы с ответами:

Написать стек на базе массива, и на базе связного списка - C++
Всем привет. Помогите пожалуйста ! Надо написать стек на базе массива, и на базе связного списка. И еще очередь на базе связного...

В чём ошибка? Контейнер, в который можно записывать сколько угодно чисел - C++
Пытался написать бездонный массив в который можно записывать сколько угодно чисел, не зная его размер. Но при работе после 3 ввода...

Реализовать упрощенный контейнер "вектор" - C++
Да, знаю, что тема избитая, но: Стоит такой вопрос &quot;Чем отличается шаблонный класс от контейнера в данном случае - Реализовать шаблон...

Реализовать очередь на базе односвязного списка - C++
собственно, весь вопрос содержится в теме. Помогите, пожалуйста, а то я совсем не понимаю как это сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.09.2011, 01:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru