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

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

Восстановить пароль Регистрация
 
ritmix10
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 92
26.05.2013, 20:04     size и capasity в векторе #1
Всем привет, возникла такая проблема
Делаю расчетную программу, использую вектор, возникла такая ситуация:
в цикле делается вот такая штука
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, как это понимать и что делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 20:04     size и capasity в векторе
Посмотрите здесь:

C++ что выполняет функция size()
dev c++ max stack size C++
C++ Метод STL size и инициализация списка
Задача: написать классы Rect и Size C++
C++ Ошибка при получении vector.size()
Поле size в структуре типа дерево C++
C++ Как в x64 декларирован тип SIZE?
C++ Internal size is too high(sfml)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
26.05.2013, 20:20     size и capasity в векторе #2
Цитата Сообщение от ritmix10 Посмотреть сообщение
size=2
показывает, сколько элементов в векторе.

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


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

Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru