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

allocator, при компиляции ошибка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как ввести в окно программы текст и запустить? http://www.cyberforum.ru/cpp-beginners/thread934099.html
Собственно в заголовке и вопрос.И еще если не очень трудно ввести в одну потом в другую графу текст=рандломный например символы количество тоже рандом.Сам продумал\и копировал чуть\: using <iostream>; using System.IO; using System.Diagnostics; main{ a int; string path = "girl.exe"; printf " "hello 12345"?a=random;
C++ Экземпляр функции Что такое "экземпляр функции"? http://www.cyberforum.ru/cpp-beginners/thread934014.html
Простой пример из книги C++
Решил сделать все задания Павловской Т.А. С/С++ и вот с самого первого примера не понял кое-что. Сама программа вылетает и не показывает ответ. Возможно что-то я не так сделал. // 1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <locale> #include <iostream> #include <stdio.h> #include <math.h>
seekg() не срабатывает по окончанию файла C++
почему когда чтение доходит до третей записи (в файле всего три стройчки с int, char и int величинами) то метод seekg(); опять не переводит указатель на нулевой байт файла?? т.е. по достижению конца файла, я не могу его прочитать сначала! подскажите пожалуйста изза чего это и как с этим жить то дальше?)) #include <iostream> #include <fstream> #include <string.h> #include <stdio.h>...
C++ подключение библиотеки http://www.cyberforum.ru/cpp-beginners/thread933958.html
доброго времени суток, при подключении библиотеки #pragma comment(lib, "OpenGL.lib") (все это проделываю в visual c++) необходимо ли прописывать к ней путь(дело в том, что скачав библиотеку в lib и подключив ее в проекте, программа все равно не понимает некоторых основополоагающих функций которые вроде как должны быть в этой библиотеке), и если да то где это нужно делать, заранее спасибо
C++ twitter аккаунты достойных программистов С++ Подскажите пожалуйста микроблоги людей программирующих на С++, а то встроенный поиск мне всё каких-то биберов и тимберлейков подсовывает :wall: подробнее

Показать сообщение отдельно
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
06.08.2013, 09:40     allocator, при компиляции ошибка
karl 777,
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
 template<typename T>
    class Vec
    {
    public:
        typedef T* iterator;
        typedef const T* const_iterator;
        typedef size_t size_type;
        typedef T value_type;
        typedef T& reference;
        typedef const T& const_reference;
 
         Vec()                                                                  // Конструктор, который говорит, что вектор пустой
         {
            create();
         }
         explicit Vec(size_type n, const T& val=T())                            // Конструктор, который веделяет память на n объектов типа T
         {
             create(n, val);
         }
 
         size_type size() const                                                 // Функция определяющая размер вектора
         {
             return avail-data;
         }
 
         T& operator[](size_type i)                                             // Доступ к i-ому элементу
         {
             return data[i];
         }
         const T& operator[](size_type i) const
         {
             return data[i];
         }
 
         iterator begin()                                                       // Возвращает итератор на начало вектора
         {
             return data;
         }
         const_iterator begin() const
         {
             return data;
         }
         iterator end()                                                         // Возвращает итератор на конец вектора
         {
             return avail;
         }
         const_iterator end() const
         {
             return avail;
         }
 
         Vec(const Vec& v)                                                      // Конструктор копирования       
         {
             create(v.begin(), v.end());
         }
 
         Vec& operator=(const Vec&);                                            // Конструктор присваивания
 
         ~Vec()                                                                 // Деструктор для разрушения вектора
         {
             uncreate();                                                    
         }
 
         void push_back(const T& t)
         {
             if(avail==limit)
                 grow();
             unchecked_append(t);
         }
 
    private:
        iterator data;                                                          // Начало инициализированых элементов
        iterator avail;                                                         // Конец инициализированых элементов и начало неицилизированых
        iterator limit;                                                         // Конец неинициализированых элементов
        
        allocator<T> alloc;                                                     // Объект, управляющий выделением памяти
 
        // Средства размещения в памяти базового массива и его инициализации
        void create();                                                          // Создает пустой vector - объект
        void create(size_type, const T&);                                       // Выделяет кол-во памяти и инициализирует эти элементы
        void create(const_iterator, const_iterator);                            // Работает как две предыдущие
 
        // Средства разрушения элементов массива и освобождения памяти
        void uncreate();
 
        // Вспомогающие процедуры для push_back
        void grow();                                                            // Выделение памяти для хранения хотя бы еще одного элемента
        void unchecked_append(const T&);                                        // Создает элемент в первой ячейки памяти расположенной за уже созданной
    };
 
//------------------------------------
 
    template <class T>                                                          // Cоздаем пустой вектор
    void Vec<T>::create()
    {
        data=avail=limit=0;                                     // Вектор пуст
    }
 
//------------------------------------
 
    template <class T> 
    void Vec<T>::create(size_type n, const T& val)                              // Выделяет памяти на n элементов типа val
    {
        data=alloc.llocate(n);                                  // Выделяется кол-во памяти для хранения n элементов
        limit=avail=data+n;
        uninitialized_fill(data, limit, val);                   // Инициализация всех элементов вектора длинною n
    }
 
//-------------------------------------
 
    template <class T> 
    void Vec<T>::create(const_iterator i, const_iterator j)                     // Выделение памяти и инициализация элементов
    {
        data=alloc.allocate(j-i);                               // Выделяет кол-во памяти для хранения j-i элементов 
        limit=avail=uninitialized_copy(i, j, data);             // Инициализация элементов с i по j(посредством копирования), возвращает итератор на элемент за j
    }
 
//-------------------------------------
 
    template <class T> 
    void Vec<T>::uncreate()                                                     // Уничтожает последствия работы функция create
    {
        if (data)
        {
            iterator it=limit;
            while(it!=data)
                alloc.destroy(--it);                            // Разрушаем каждый элемент по очереди
            alloc.deallocate(data, limit-data);                 // Освобождаем всю занятую ранее память
        }
        data=avail=limit=0;                                     // Говорим о том, что вектор пуст
    }
 
//--------------------------------------
 
    template <class T> 
    void Vec<T>::grow()                                                         // Выделение памяти для последуещего элемента
    {
        size_type new_size=max(2*(limit-data), ptrdiff_t(1));   // При увеличении объекта выделяемой области памяти, вдвое большую используемой в данный момент
                                                                // ptrdiff_t(1) - имеет тот же тип, что и limit-data
 
        iterator new_data=alloc.allocate(new_size);             // Веделяем память для хранения new_size элементов
        iterator new_avail=uninitialized_copy(data, avail, new_data); // Инициализация элементов
 
        uncreate();                                             // Освобождаем память
 
        // Переводим указатели на новое место
        data=new_data;
        avail=new_avail;
        limit=data+new_size;
    }
 
//---------------------------------------------
 
    template <class T> 
    void Vec<T>::unchecked_append(const T& val)                                 // Создание элемента в первой ячейке памяти за уже существующей
    {
        allос.construct(avail++, val);                          // Создание элемента на место avail++ типа val
    }
Попробуйте.
 
Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru