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

Вопрос про заполнение Vector - а - C++

Восстановить пароль Регистрация
 
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
05.04.2010, 11:00     Вопрос про заполнение Vector - а #1
Доброго всем времени суток.
Вопрос следующий
есть vector mxyz размерностью 26873856 = 5184*5184 = 72*72*36*48*3
надо после каждого mxyz[i+5183] вставить элемент из другого вектора grace (размерностью 5184), т.е. если это записать через двумерный массив то требуется из mxyz[5184][5184] сделать mxyz[5184][5185]
Не могу понять куда трубуется вставить еще один push_back(), (и как он должен выглядеть ) чтобы это сделать
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
int z0=0,x2,y2,z2;
n = 5184;
for( int y0=0; y0<(int)sqrt(grace.size()); y0++)
    {
         for(int x0=0; x0<(int)sqrt(grace.size()); x0++)
         {
                 if((x0-(int)sqrt(grace.size())/2)*
                 (x0-(int)sqrt(grace.size())/2)+
                 (y0-(int)sqrt(grace.size())/2)*
                 (y0-(int)sqrt(grace.size())/2)<=
                 (int)sqrt(grace.size())*(int)sqrt(grace.size())/2 )
                 {
                  for( int y1=1; y1<=36; y1++)
                       {
                           for(int x1=1; x1<=48; x1++)
                           {     
                           x2=x1-x0; y2=y1-y0; z2=z1-z0;
                           mxyz.push_back((cmxi(x2,y2,z2));
                           mxyz.push_back((cmyi(x2,y2,z2));
                           mxyz.push_back((cmzi(x2,y2,z2));
                           }
                       }                       
                  } 
           }
     }
Пробовал через insert(), но очень долго и глючит из-за размеров вектора поэтому требуется через push_back
C++
1
2
3
4
5
6
7
8
9
10
  vector<double>::iterator it;
    it = mxyz.begin();
    //it += 5183;
   
     for(int i=0;i<n;i++)
     {
    it += 5183+i;
    mxyz.insert ( it ,grace[i]);
     
     }
Заранее спасибо

Добавлено через 33 минуты
sqrt(grace.size()) = 72

Добавлено через 6 минут
Если поможет, то можно поменять порядок циклов for на:

C++
1
2
3
4
5
6
7
8
9
10
11
12
 for( int y1=1; y1<=36; y1++)
                       {
                           for(int x1=1; x1<=48; x1++)
                          {     
 
                 if()......
                    {
                 for( int y0=0; y0<(int)sqrt(grace.size()); y0++)
                   {
                       for(int x0=0; x0<(int)sqrt(grace.size()); x0++)
                            {
mxyz.push_back......
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2010, 11:00     Вопрос про заполнение Vector - а
Посмотрите здесь:

C++ Вопрос про файлы
C++ Вопрос про цикл.
C++ вопрос про new из с++ за 21 день
Вопрос про память... C++
Вопрос про char C++
C++ Вопрос про Swich
C++ error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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