Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Объемы памяти для трех стилей vector.

Posted on 8 мая, 20138 мая, 2013 by admin

С генерируйте 10000 однородно распределенных на интервале от 0 до 1023 чисел и сохраните их в: а) стандартном библиотечном контейнере vector; b)контейнере Vector из параграфа 16.5.[7]; c)контейнере Vector из 16.5[9]. Во всех случаях вычислите среднее арифметическое элементов контейнеров. Засеките время. Оцените, измерьте и сравните между собой объемы потребления памяти для трех этих стилей вектора.

Мне прям щас хочется сделать эту задачку. Задачка очень простенькая. Тупо создать вектор и посчитать средние арифметическое. Наверно щас и сделаю все таки. Тут одни трудности будут с подсчетом времени. И с потреблением памяти. Ладно щас еще я вам ссылки скину на посты 16.5.[7] это: http://www.kselax.ru/2013/05/klassy-vector-list-i-itor/  и ссылочку на 16.5.[9] это: http://www.kselax.ru/2013/05/klassy-container-vector-i-list/ . Там вы можете посмотреть на эти вектора с помощью которых нам предлагается сделать данную задачку. Ладно я наверно для начала пойду по очереди делать. Сначала для стандартного вектора посчитаю замеряю замеряю память и создам. Затем для двоих остальных. Так я думаю будет проще.

Посмотреть как можно время замерять вы можете по ссылке: http://www.kselax.ru/2013/05/zameryat-vremya-raboty-programmy/ 

Вообщем сделал я но только для двоих для Vector из 16.5.[9] я не сделал, потому, что там почему то вылазит ошибка и не понятная, что за ошибка.  Вообщем от код, что получился. Какой получился такой получился. Мб доделаю я на форуме создал тему с этой ошибкой мб кто то щарящий подскажет в чом ошибка. Ладоно пока что от вам код кокой есть:

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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
//programma proizvoditel6nocti
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <cstdlib>
using std::rand;
using std::srand;
#include <ctime>
using std::time;
 
//Vector iz 16.5.[7]
template<class T>
class Vector//optimal6nui
{
public:
T mass[10000];
int size;
explicit Vector(size_t n):size(n){}//inicializaci9 n ob6ektami co znacheniem T()
 
T& operator[](size_t n)//indekcaci9
{
if(n<=size&&n>=0)
return mass[n];
}
T getSize(){return size;}
//...
};
 
 
//Vector iz 16.5.[9]
struct Object
{
Object* pre;
Object* next;
//...
public:
//konctryktor po ymolchaniyu
Object():pre(0),next(0){}
 
//virtual6nui dectryktor
virtual ~Object(){};
};
 
class Container : public Object
{
public:
struct Bad_op//klacc icklyuchenii
{
const char* p;
Bad_op(const char* pp):p(pp){}
};
virtual void put(Object*){throw Bad_op("put");}
virtual Object* get() {throw Bad_op("get");}
virtual Object*& operator[](int){throw Bad_op("[]");}
//...
};
 
class Vector1 : public Container
{
Object* tek;//pervui element;
int size;//razmer
public:
//konctryktor preobrazovani9
Vector1(int i):size(i),tek(0){}
 
//dabavit6 elementu
void put(Object* a)
{
//cout <<"Mu v put"<<endl;
if(tek==0)
{
//cout <<"vector pyct"<<endl;
if(size!=0)
tek=a;
}
else
{
//cout <<"vector ect6 elementu"<<endl;
Object* temp=tek;
tek->next=a;
a->pre=tek;
tek=a;
}
}
 
//indekc
Object*& operator[](int a)
{
//cout <<"Mu cdec6"<<endl;
if(a==0)
return tek;
else
{
if(a>0&&a<size)
{
int count=0;
Object* t = opHelper(a,tek->pre,count);
//cout <<"t= "<<t<<endl;
return t;
}
}
//return 0;
}
 
//opHelper
Object*& opHelper(int& a, Object* Ptr,int& count)
{
if(Ptr!=0&&++count==a)
{
//cout <<"a= "<<a<<" cout= "<<count<<endl;
//cout <<"MU TYT"<<endl;
//exit(1);
//cout <<"Ptr= "<<Ptr<<endl;
return Ptr;
}
else if(Ptr!=0&&count!=a)
opHelper(a,Ptr->pre,count);
else
{
//cout <<"element ne cozdan"<<endl;
exit(1);
}
}
//...
};
 
class elem : public Object
{
public:
int data;
elem(int a):data(a){}
};
 
int main()
{
 
clock_t begin, end;
    double time_spent;
    begin = clock();
 
vector<int> vec;
srand(time(0));
for(int i=0;i<10000;i++)
{
vec.push_back(rand()%1024);
//cout <<vec[i]<<' ';
}
//racchitaem crednee arifmeticheckoe
double sum=0;
double sredV=0;
for(int i=0;i<vec.size();i++)
{
sum+=vec[i];
}
sredV=sum/10000;
cout <<"sredV= "<<sredV<<endl;
cout <<endl;
cout <<"vec.capacity()= "<<vec.capacity()<<endl;
    
    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cout<<"Executed in "<<time_spent;
cout <<endl<<endl<<endl;
 
//provedem racchet dl9 Vector iz 16.5.[7]
begin=0;
end=0;
    time_spent=0;
    begin = clock();
 
Vector<int> vec1(10000);
for(int i=0;i<vec1.getSize();i++)
{
// cout <<"vec["<<i<<"]= "<<vec[i]<<endl;
vec1[i]=rand()%1024;
}
//podcchet crednego arifmeticheckogo
sum=0;
sredV=0;
for(int i=0;i<10000;i++)
sum+=vec1[i];
 
sredV=sum/10000;
cout <<"cred dl9 Vectr 16.5.[7]= "<<sredV<<endl;
cout <<"pam9t6 = "<<sizeof(vec1)<<endl;
 
end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cout<<"Executed in "<<time_spent;
 
cout <<endl<<endl<<endl;
 
/*//proizvedem podcchet dl9 Vector iz 16.5.[9]
Vector1 vec2(10000);
for(int i=0;i<10000;i++)
{
elem* a= new elem(rand()%1023);
//cout <<a.data<<endl;
//a=(rand()%1024);
vec2.put(a);
if(i==9999)
cout <<"i= "<<i<<endl;
}
//elem* pr=dynamic_cast<elem*>(vec2[7000]);
//cout <<pr->data<<endl;
//exit(1);
//podcchet crednego arifmeticheckogo
double sum=0;
double sredV=0;
for(int i=0;i<10000;i++)
{
//elem* pr=dynamic_cast<elem*>(vec2[i]);
cout <<i<<endl;
sum+=dynamic_cast<elem*>(vec2[i])->data;
}*/
 
return 0;
}

Я думаю без пояснения здесь и так все ясно.

[youtube]http://www.youtube.com/watch?v=feGCvRFlSl0[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • ExchiNuGs к записи Программка для заполнения форума на vBulletin 3.8.7
  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
©2021 Kselax.ru Theme by ThemeGiant