Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Особенности NTFS https://www.cyberforum.ru/ cpp-beginners/ thread929415.html
Доброго времени суток! Уважаемые форумчане, проясните мне пожалуйста один вопрос. Пишу программу, которая ищет на диске последовательность, заранее сгенерированную и записанную в файл. Проблема заключается в следующем. Если файл короткий - например 512 байт, то он пишется сразу в FILE RECORD в MFT. Все бы хорошо, но. Последние 2 байта из первого сектора записи - совершенно другие, а те 2...
программирование в visual studio 2010 C++
Завтра вступительные экзамены в универ, программирование в visual studio 2010. Вся проблема в том что 2 года назад окончила техникум в котором приходилось работать только в borland c++. Скачала visual studio 2010, сижу, смотрю, не знаю что с ним делать. Помогите пожалуйста! Создание, компилирование проекта и прочее, дальше, думаю разберусь, главное начать, и знать как закончить))
C++ Класс Телефонная Книга https://www.cyberforum.ru/ cpp-beginners/ thread929373.html
Доброго времени суток форумчане! Получил следующее задание, но столкнулся с проблемой.. 1) опишите класс "контакт", описывающий имя, номер телефона, примечание 2) опишите класс "Телефонная Книга", содержащий определенное количество контактов(как я понял, создать массив класса "контакт"). Определить методы добавления/удаления человека, а так же поиск по имени или примечанию. Class.h class...
C++ посоветуйте сайт для новичка с++ https://www.cyberforum.ru/ cpp-beginners/ thread929359.html
Посоветуйте какие сайты лучше читать для новичка с++, я сам основу учил в http://cppstudio.com/uchebniki/yazyk-programmirovaniya-s/
"Программирование. Принципы и практика использования C++". Работа с графикой C++
Добрый вечер. В данный момент изучаю указанную в заголовке книгу, а точнее ту её часть, которая посвящена работе с графикой на основе библиотеки FLTK. В конце каждой главы идут задачи на закрепление материала. Трудности с решением были и ранее, но сейчас получается осилить лишь самое простое. Отсюда просьба: если кто - то занимался по данной книге и успешно порешал задачки из данной части,...
C++ Конвертирование файла в 10-ю систему счисления и обратно Добрый вечер уважаемые Участники. Это снова я:-* Появилась тут еще 1-на интересная или не интересная задача, в общем для кого как. Мне нужна маленькая программка. Нужно конвертировать любой входной файл из обычного вида, в 10-й вид. Т.е в выходном файле будет длиннющее число. И нужна возможность конвертирования обратно - из 10-го. Пример: Входной файл test.dat, его содержание в WinHex:... https://www.cyberforum.ru/ cpp-beginners/ thread929302.html
C++ Программа hello world! Помагите написать программу на С-+ https://www.cyberforum.ru/ cpp-beginners/ thread929292.html Родительский и дочерний класс C++
Всем доброго времени суток. Возникла проблема; //file Base.h #include "Children.h" class Base { public: Children* a; } //file Children.h #include "Base.h" class Children: public Base { ...
C++ This app requiested Runtime to terminate https://www.cyberforum.ru/ cpp-beginners/ thread929261.html
Здравствуйте! У меня возникла очень странная проблема: выскакивает вот такое чудо при запуске моей программы И что самое главное компилятор minGW. При чем здесь библиотека рантайма визуал С++?? Компилирует все хорошо. Поясните, что это за хрень. ЗЫ На всякий случай, у меня эти библиотеки установленные.
C++ Тестовое задание на Junior C++ dev https://www.cyberforum.ru/ cpp-beginners/ thread929251.html
Доброго времени суток. Неделю назад ради интереса отправил свое резюме в одну компанию, куда требуются с++ юниоры. Получил от них тестовое задание. Я ожидал, что они мне откажут (опыта то у меня действительно мизер), но хотелось бы узнать у более опытных людей, какое решение задач "ожидает" компания от соискателя для продолжения с ним отношений. Далее идет 4 задачи и мой вариант решения каждой...
Дальнейший путь C++
Всем доброго времени суток. На данный момент прочитал 2 книги по С++ (Шилдт - руководство для начинающих и Лафоре - ооп в С++. Хотелось бы спросить совета в каком направлении двигаться дальше. С одной стороны хочется взглянуть на С#, с другой, возможно, имеет смысл углубить знания в С++. Что по вашему было бы правильнее для студента 2ого курса?
C++ Перевод из строки в число Подскажите в чем ошибка. Метод должен принимать строку в виде $456 654 456.36 и выдавать число типа double. double bMoney::getmoney() { unsigned int i; char Mass, Mass2; cout << "Введите сумму: "; cin.get(Mass, MAX); for(i = 0; i < strlen(Mass); i++) { switch (Mass) https://www.cyberforum.ru/ cpp-beginners/ thread929230.html
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
28.07.2013, 12:03  [ТС] 0

allocator - C++ - Ответ 4890326

28.07.2013, 12:03. Показов 2472. Ответов 8
Метки (Все метки)

Ответ

Набрал код из книги пытаюсь запустить вектор и map со своим аллокатором но ничего не работает, для вектора вроде rebind не определен в шаблоне, а для map ошибка: "c:\program files\microsoft visual studio 10.0\vc\include\map(213): error C2064: результатом вычисления фрагмента не является функция, принимающая 2 аргументов"

Нужно доработать Pool_allocator и протестить для vector и map чтоб работал!!!!
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//Pool_alloc
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <map>
using std::map;
#include <string>
using std::string;
#include <utility>
using std::pair;
 
class Pool
{
    struct Link{Link* next;};
 
    struct Chunk
    {
        enum{size=8*1024-16};//слегка менше 8К, чтобы кусок памяти умещался в 8К
        char mem[size];//для достижения точного выравнивания
        Chunk* next;
    };
 
    Chunk* chunks;
    const unsigned int esize;
    Link* head; 
    Pool (Pool&); //защита от копирования
    void operator=(Pool&);//защита от копирования
    void grow();//увеличить пул
 
public:
    Pool(unsigned int n);//n это размер элементов
    ~Pool();
 
    void* alloc();//выделить память под один элемент
    void free(void* b);//возвращение элемента в пул
};
 
inline void* Pool::alloc()
{
    if(head==0)grow();
    Link* p=head;//вернуть первый элемент
    head=p->next;
    return p;
}
 
inline void Pool::free(void* b)
{
    Link* p=static_cast<Link*>(b);
    p->next=head;
    head=p;
}
 
Pool::Pool(unsigned int sz)
    :esize(sz<sizeof(Link)?sizeof(Link):sz)
{
    head=0;
    chunks=0;
}
 
Pool::~Pool()//освободить все куски (chunks)
{
    Chunk* n=chunks;
    while(n)
    {
        Chunk* p=n;
        n=n->next;
        delete p;
    }
}
 
void Pool::grow()//выделяет новый 'chunk', организуя его в виде связанного
    //списка элементов размером 'esize'
{
    Chunk* n=new Chunk;
    n->next=chunks;
    chunks=n;
 
    const int nelem=Chunk::size/esize;
    char* start=n->mem;
    char* last=&start[(nelem-1)*esize];
 
    for(char*p=start;p<last;p+=esize)
        reinterpret_cast<Link*>(p)->next=reinterpret_cast<Link*>(p+esize);
 
    reinterpret_cast<Link*>(last)->next=0;
    head=reinterpret_cast<Link*>(start);
}
 
template<class T> class Pool_alloc
{
private:
    static Pool mem;//пул элементов размером sizeof(T)
 
public:
    //аналогично стандартному аллокатору(19.4.1)
    typedef unsigned int size_type;
    typedef T* pointer;
 
    Pool_alloc();
    T* allocate(size_type,void*);
    void deallocate(pointer p,size_type n);
};
 
//инициализация статического члена
template<class T> Pool Pool_alloc<T>::mem(sizeof(T));
 
template<class T> Pool_alloc<T>::Pool_alloc(){}
 
template<class T>
T* Pool_alloc<T>::allocate(size_type n,void* k)
{
    if(n==1)return static_cast<T*>(mem.alloc());
    //...
}
 
template<class T>
void Pool_alloc<T>::deallocate(pointer p,size_type n)
{
    if(n==1)
    {
        mem.free(p);
        return;
    }
    //...
}
 
int main()
{
    cout <<"Pool alloc"<<endl;
    //vector<int,Pool_alloc<int> >v;
    map<string,int,Pool_alloc<pair<const string,int> > >m;
    m["hellow"]=33;
    //m["world"]=40;
    //cout <<m["hellow"]<<m["world"]<<endl;
 
    return 0;
}


Вернуться к обсуждению:
allocator C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2013, 12:03
Готовые ответы и решения:

Распределитель памяти идентичный std::allocator. Непонятные синтаксис и концепция std::allocator::construct
Компилятор: MSVC 2010 Exress код моего класса распределяющего память под спойлером #include...

std::allocator
я не смог найти хорошего описания роботы с аллокатором, так что спрашиваю у тех, кто с ним работал...

Allocator и shared_ptr
Прокомментируйте пожалуйста. Есть ли смысл и вообще возможность оформлять зарезервированную память...

std::allocator
Здравствуйте! Подскажите почему возникает ошибка сегментирования: using std::cout; using...

8
28.07.2013, 12:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2013, 12:03
Помогаю со студенческими работами здесь

Ошибка с allocator
Приветствую. Пользуюсь Dev-C++. При выполнении кода, ошибка, что на скрине. #include...

allocator своя версия
Доброго времени суток. Мне нужно написать class allocator на подобии стандартного. Он должен...

Vector allocator SQLite
Гуру, помогите новичку! Столкнулся с проблемой, и даже не понимаю в чем она... Надо: сделать...

allocator std::map
Подскажите вопрос, есть тестовое задание: Подскажите где про это почитать и разъясните...

Рееализация Heap Allocator
Мне нужно написать HeapAllocator. Что мне нужно: У меня есть haeder в котором в первом левом бите...

Лямбда-выражение, allocator + destroy
Подскажите в чем ошибка пожалуйста( отказывается выполнять функцию destroy: ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru