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

Исправить и дополнить распределитель памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ извлечь данные из файла и вывести результаты тоже в файл http://www.cyberforum.ru/cpp-beginners/thread898614.html
Здравствуйте. Есть вот такое задание -Даны пять действительных чисел. Выберите из них те, которые принадлежат интервалу (5; 16), и возведите их в квадрат. Для данного задания написал код программы : #include <iostream> #include <string> using namespace std; int main() { setlocale(0,"");
C++ Выручайте!Алгоритмы обработки символьной информации Задачу необходимо предствить в виде формы(кнопка и 2 поля). В древнеяпонском календаре был принят 60-летний цикл из пяти 12-летних циклов,обозначенных цветами:зеленый,красный,желтый,белый, и черный.В подциклах каждый год имел название одного из животных:крысы,быка,тигра,кролика,дракона,змеи,лошади,овцы,обезьяны,петуха,собаки и кабана. Началом очередного цикла был 4-ый год нашей эры,год зеленой... http://www.cyberforum.ru/cpp-beginners/thread898613.html
C++ Какой компилятор поддерживает С++ 11?
Привет! Какой-нибудь компилятор реализует уже стандарт С++ 11?
Скомпилировалось с ошибкой C++
Вот код: #include <iostream> using namespace std; int main() { cout < "Hello, World!"; }
C++ Ошибка в коде.Строки http://www.cyberforum.ru/cpp-beginners/thread898581.html
Задание:Вывести все слова предложения, содержащие последнюю букву предыдущего слова не менее 2 раз. Задание полностью не сделал,но в чём моя ошибка? Код:#include <algorithm> #include <iostream> #include <conio.h> #include <iostream> #include <conio.h> using namespace std; int main() {
C++ Вычитать значения параметров из текста В примере ниже блок данных, в котором жирным выделено то, что надо вычитать. Как быть? Никак не могу понять, как с помощью регулярного выражения получить значение, стоящее ПОСЛЕ какого-то слова... (padStyleDef "REC_0.15x0.15" (holeDiam 0.0) (isHolePlated False) (StartRange 1) (EndRange 2) (padShape (layerNumRef 1) (padShapeType Rect) (shapeWidth 0.15 mm) (shapeHeight... подробнее

Показать сообщение отдельно
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181

Исправить и дополнить распределитель памяти - C++

11.06.2013, 16:13. Просмотров 352. Ответов 0
Метки (Все метки)

Добрый день.
Изучаю книгу Страуструпа (ту, что для новичков). Там есть задание создать упрощённый вариант класса allocator с исп. функций malloc и free.
Вот мой код:
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
//Allocator.h
#include<cstdlib>
#define allocator Allocator
 
template<class T> class Allocator {
public:
    T* allocate(int n);
    void deallocate(T* p, int n);
 
    void construct(T* p, const T& v);
    void destroy(T* p);
};
 
template<class T> 
T* Allocator<T>::allocate(int n)
{
    return static_cast<T*>(malloc(n*sizeof(T)));
}
 
template<class T>
void Allocator<T>::deallocate(T* p, int n)
{
    for (int i=0; i<n; ++i) {
        free(p);
        ++p;
    }
}
 
template<class T>
void Allocator<T>::construct(T* p, const T& v)
{
    /**p=T(v);*/
    *p=v;
}
 
template<class T>
void Allocator<T>::destroy(T* p)
{
    p->~T();
}
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
#include<iostream>
#include<string>
#include"Allocator.h"
using namespace std;
 
int main()
{
    allocator<string> alloc;
    string* ps;
 
    ps=alloc.allocate(5);
    alloc.construct(ps, string("string"));
 
    /*allocator<int> alloc;
    int* pi;
    pi=alloc.allocate(2);
    alloc.construct(pi+1,2);
 
    cout<<pi[2]<<endl;
 
    alloc.destroy(pi+2);
    alloc.deallocate(pi,2);*/
 
    cin.get();
    return 0;
}
При выполнении, к сожалению, выдаётся ошибка.
Помогите решить:
1) Как довести до ума данный код?
2) Как реализован библиотечный класс allocator: c использование malloc/free или new/delete?
3) Что нужно добавить, чтобы данный вариант не уступал по функционалу библиотечному?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru