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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить баланс скобок http://www.cyberforum.ru/cpp-beginners/thread112808.html
:)Здравствуйте. Помогите пожалуйста с задачей. Проверить имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок, т.е. верно ли, что можно установить взаимно однозначное соответствие открывающихся и закрывающихся скобок, со следующими свойствами: а) Открывающаяся скобка всегда предшествует закрывающейся. б) Первый и последний символ...
C++ Подскажите открытый проект на c++ Подскажите проект на C++ с открытыми исходными кодами, как сказать для изучения. http://www.cyberforum.ru/cpp-beginners/thread112805.html
C++ Чтение файла
Как в си прочитать файл побайтово?
C++ как сравнить даты??
допустим у меня есть две даты.как определить какая из них больше?? например char data; char Data; strcpy(data,"10.10.2010"); strcpy(Data,"20.10.2009"); //как их сравнить???
C++ Как прочитать из файла большой объем чисел (килобайт 200) ? http://www.cyberforum.ru/cpp-beginners/thread112775.html
как прочитать из файла большой объем чисел (килобайт 200) ? т.е. как реализуется это на си? например, есть файл input.txt в нем лежит набор чисел. Программа считывает его и выполняет какие то действия, например сортирует.. Приведите примеры пожалуйста.
C++ не видится класс Здрасти. Я вынес интерфейс класса в файл *.h #ifdef _generateSudoku_H_ #define _generateSudoku_H_ //класс, эмулирующий генерацию судоку class generateSudoku{ public: generateSudoku(int initVer=9, int initHor=9); ~generateSudoku(){}; подробнее

Показать сообщение отдельно
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309

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

05.04.2010, 11:00. Просмотров 402. Ответов 0
Метки (Все метки)

Доброго всем времени суток.
Вопрос следующий
есть 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......
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru