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

контейнер - C++

Восстановить пароль Регистрация
 
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
12.06.2012, 15:14     контейнер #1
Создать контейнер, в который можно добавлять и удалять методы. Размер контейнера должен увеличиваться автоматически.
Вот такое задание , я не знаю с чего начать , вообще не могу представить как это сделать .
Буду рад любым идеям
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2012, 15:14     контейнер
Посмотрите здесь:

Контейнер с указателями на... C++
Контейнер set C++
контейнер vector C++
C++ контейнер set
Контейнер deque C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.06.2012, 15:17     контейнер #2
Цитата Сообщение от balrak Посмотреть сообщение
я не знаю с чего начать
с поиска надо начинать
например: Реализация классов вектор и строка
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
12.06.2012, 15:25  [ТС]     контейнер #3
Jupiter, спасибо за сылку
но там куева туча кода
я не настолько силен в с++ , можете сказать саму суть как это зделать?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
12.06.2012, 16:53     контейнер #4
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <algorithm>
#include <stdexcept>
 
template<typename T>
class Vector
{
public:
    Vector() : p(nullptr), vSize(0){}
    void push_back(const T& val)
    {
        T* pt = new T[vSize + 1];
        std::copy(p, p + vSize, pt);
        pt[vSize++] = val;
        std::swap(p, pt);
        delete[] pt;
    }
    void erase(std::size_t ind)
    {
        if(ind < vSize)
        {
            T* pt = new T[vSize - 1];
            std::copy_if(p, p + vSize, pt, [ind, p](const T& rVal){return &rVal - p != ind;});
            std::swap(p, pt);
            --vSize;
            delete[] pt;
        }
        else std::cerr << "erase failed: ind >= vSize" << std::endl;
    }
    T& operator[](std::size_t ind)
    {
        if(ind >= vSize) throw std::out_of_range("operator[] failed: ind >= vSize");
        return p[ind];
    }
    std::size_t size() const
    {
        return vSize;
    }
    ~Vector(){delete[] p;}
private:
    Vector(const Vector&);
    Vector& operator= (const Vector&);
    std::size_t vSize;
    T* p;
};
 
void Fa(){std::cout << "Fa" << std::endl;}
 
void Fb(){std::cout << "Fb" << std::endl;}
 
void Fc(){std::cout << "Fc" << std::endl;}
 
int main()
{
    Vector<void(*)()> v;
    v.push_back(Fa);
    v.push_back(Fb);
    v.push_back(Fc);
    v.erase(2);
    for(int i = 0; i < v.size(); ++i)
    {
        v[i]();
    }
    return 0;
}
Yandex
Объявления
12.06.2012, 16:53     контейнер
Ответ Создать тему
Опции темы

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