Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ritmix10
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 92
#1

size и capasity в векторе - C++

26.05.2013, 20:04. Просмотров 234. Ответов 2
Метки нет (Все метки)

Всем привет, возникла такая проблема
Делаю расчетную программу, использую вектор, возникла такая ситуация:
в цикле делается вот такая штука
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
while(a < ob->dw)
            {
                
                //сделаем цикл, который будет набирать статистику для частоты синуса w1 при фиксированном dw
                for(double temp_w=ob->w1-0.5;temp_w<=ob->w1+0.5;temp_w+=0.5)
                {
                    ob->spectr=false;
                    ob->Y=func(ob->A1,ob->A2,/*ob->w1*/temp_w,a,ob->nn,ob->Fd);
                    ob->noise=Noise(ob->Y,ob->nn,k_noise);
                    ob->zoom(ob->noise);
 
                    ob->picture(&ob->pMemDc,ob->rect,ob->y_max,ob->y_min,1);
                    ob->Draw(&ob->pMemDc,ob->rect,ob->noise,0,0,255,ob->y_max,ob->y_min,1);
                    ob->y_max=0;
                    ob->y_min=0;
 
                    ob->akp.resize(ob->m);
                    ob->akp=correlation(ob->noise,ob->m,ob->nn);
 
 
                    ob->zoom(ob->akp);
                    ob->picture_other(&ob->pMemDc3,ob->rect_akp,ob->y_max,ob->y_min,4);
                    ob->Draw_other(&ob->pMemDc3,ob->rect_akp,ob->akp,0,128,255,ob->y_max,ob->y_min,4);
 
                    
                    ob->spectr_cor=spectral_akp(L,ob->m,ob->nn,i,ob->Fd);
                    ob->y_max=0;
                    ob->y_min=0;
                    ob->zoom(ob->spectr_cor);
                    ob->picture(&ob->pMemDc1,ob->srect,ob->y_max,ob->y_min,2);
                    ob->Draw(&ob->pMemDc1,ob->srect,ob->spectr_cor,0,0,255,ob->y_max,ob->y_min,2);*/
                    k_=ob->MHJ(L);
                    SetEvent(ob->h_data);
                    ob->temp_k_dw.push_back(k_);
                    ob->spectr=false;
 
                }
 
                ob->Y=func(ob->A1,ob->A2,ob->w1,a,ob->nn,ob->Fd);
                ob->noise=Noise(ob->Y,ob->nn,k_noise);
                ob->zoom(ob->noise);
 
                ob->picture(&ob->pMemDc,ob->rect,ob->y_max,ob->y_min,1);
                ob->Draw(&ob->pMemDc,ob->rect,ob->noise,0,0,255,ob->y_max,ob->y_min,1);
                ob->y_max=0;
                ob->y_min=0;
 
                ob->akp.resize(ob->m);
                ob->akp=correlation(ob->noise,ob->m,ob->nn);
 
 
                ob->zoom(ob->akp);
                ob->picture_other(&ob->pMemDc3,ob->rect_akp,ob->y_max,ob->y_min,4);
                ob->Draw_other(&ob->pMemDc3,ob->rect_akp,ob->akp,0,128,255,ob->y_max,ob->y_min,4);
 
 
                k_=ob->MHJ(L);
                SetEvent(ob->h_data);
                ob->temp_k_dw.push_back(k_);
                //каждый раз будем помещать этот коэф в вектор
 
                double sum=0;
                for(int i=0;i<ob->temp_k_dw.size();i++)
                {
                    sum+=ob->temp_k_dw[i];
                }
                sum/=ob->temp_k_dw.size();
                //и усредним нашу зависимость, должно быть все норм
                ob->k_dw.push_back(sum);
                sum=0;
 
 
                if(ob->spectr==true && ob->min_dw==false /*&& a>2*/ && a>temp_dw_a)
                {
                    point_dw=a;
                    temp_dw_a=a;
                    ob->dw_n.push_back(a);//кинем сюда dw, при котором разрешиться спектр при конкретном шуме
                    ob->min_dw=true;
                    ob->spectr=false;
                    str_min_dw.Format(L"Разрешающая разностная частота: %.2f ",point_dw);
                    ob->SetDlgItemTextW(IDC_chast,str_min_dw);
                }
 
                ob->y_max=0;
                ob->y_min=0;
                ob->zoom(ob->k_dw);
                ob->picture_other(&ob->pMemDc2,ob->rect_k_dw,ob->y_max,ob->y_min,3);
                ob->Draw_other(&ob->pMemDc2,ob->rect_k_dw,ob->k_dw,0,128,255,ob->y_max,ob->y_min,3);
                ob->frame_k_dw_DC->BitBlt(0,0,ob->rect_k_dw.Width(),ob->rect_k_dw.Height(),&ob->pMemDc2,0,0,SRCCOPY);
 
                a+=ob->step_dw;
 
            
            }
проблема с вектором dw_n. Я заношу в него одно значение, цикл сменился, в него заносится другое значение, и т.д.
и бывает случай размер вектора size=2, capasity=9, как это понимать и что делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 20:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос size и capasity в векторе (C++):

Заполнить квадратную матрицу змейкой по диагонали, начиная с элемента matrix[size-1][size-1] - C++
Требуется написать программу, которая заполняет массив размерности n*n по заданному правилу: 25 23 22 16 15 24 ...

Invalid error size - C++
Ошибка выпадает при поиске файлов. В коде получаю хандле файла,проверяем ,если хандле больше нуля,тогда выделяем память. вот скрин...

dev c++ max stack size - C++
подскажите где в dev c++ можно выставить размер стэка,стандартного 1 мб маловато мне 3 необходимо

Что возвращает функция size()? - C++
что выполняет функция size() не могу найти кто знает скажите плиз

Приведение типов string.size() к (void*) - C++
Добрый день помогите пожалуста записать значение возвращаемое string.size() в фаил FILE * fp; fp = fopen(&quot;C:\\T01.txt&quot;,&quot;rb&quot;); ...

Как в x64 декларирован тип SIZE? - C++
Я что то не могу до него правой кнопкой добраться.

2
mat_for_c
174 / 169 / 37
Регистрация: 26.04.2013
Сообщений: 780
Завершенные тесты: 3
26.05.2013, 20:20 #2
Цитата Сообщение от ritmix10 Посмотреть сообщение
size=2
показывает, сколько элементов в векторе.

Цитата Сообщение от ritmix10 Посмотреть сообщение
capasity=9
показывает, сколько всего элементов можно затолкать в вектор без выделения дополнительной памяти.


Цитата Сообщение от ritmix10 Посмотреть сообщение
что делать?
а что вас смущает?
0
ritmix10
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 92
26.05.2013, 20:59  [ТС] #3
смотри что происходит, допустим у меня на каждом шаге заталкиваются цифры 1,2,3,4,5,6, 7
объем массива составил 7 элементов, потом, когда заносится следующая точка, у меня почему то массив очищается и получаются только цифры 8,9,10
хотя я массив не чищу, и из-за этого компилятор в конце программы выкидывает ошибку
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 20:59
Привет! Вот еще темы с ответами:

Ошибка при получении vector.size() - C++
Здравствуйте! Работал-работал и тут не с того не с сего начала вываливаться ошибка: First-chance exception at 0x00A9AAA9 in...

total size of local objects too large - C++
Проблема: total size of local objects too large Создаю 4 массива вида double a, это необходимый миниум (700, 100, 350), а потом нужно...

Invalid allocation size 4294967295 bytes - C++
Здравствуйте! Пытаюсь реализовать алгоритм обхода Грэхема. При запуске приложения появляется критическая ошибка: Invalid allocation size...

Функция size() стандартного класса string - C++
Добрый день. При поптыке посчитать количество символов в введённой строке на латыне - отображает верный результат, а кириллицу читает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru