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

Добавление объектов в вектор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
05.11.2012, 21:18     Добавление объектов в вектор #1
У меня есть класс в котором очень много объектов. Мне нужно все объекты добавить в вектор, но делать это вот так очень долго:

C++
1
2
3
4
5
6
7
8
9
10
class My {};
 
int main() {
    
    My s1;
    My s2;
    My s3;
    My s4;
    ...
}
Возможно ли как нибудь все объекты класса добавить в вектор циклом???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
05.11.2012, 21:31     Добавление объектов в вектор #2
что-то вроде этого?
C++
1
2
3
4
5
6
7
    vector<M> s1;
    M *s;
    for(int i=0;i<10;i++){
        s=new M;
        s1.push_back(*s);
        delete s;
    }
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.11.2012, 21:43     Добавление объектов в вектор #3
C++
1
2
vector<My> vec(4);
vec[0] = My(какие то данные);
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
05.11.2012, 21:54  [ТС]     Добавление объектов в вектор #4
Цитата Сообщение от Croessmah Посмотреть сообщение
что-то вроде этого?
C++
1
2
3
4
5
6
7
    vector<M> s1;
    M *s;
    for(int i=0;i<10;i++){
        s=new M;
        s1.push_back(*s);
        delete s;
    }

Тоесть все объекты моего класса будут занесны в вектор???
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
05.11.2012, 21:59     Добавление объектов в вектор #5
Цитата Сообщение от Egor138 Посмотреть сообщение
Тоесть все объекты моего класса будут занесны в вектор???
Я просто не совсем понял что Вам нужно =)
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
05.11.2012, 22:00     Добавление объектов в вектор #6
Цитата Сообщение от Egor138 Посмотреть сообщение
У меня есть класс в котором очень много объектов. Мне нужно все объекты добавить в вектор, но делать это вот так очень долго:

C++
1
2
3
4
5
6
7
8
9
10
class My {};
 
int main() {
    
    My s1;
    My s2;
    My s3;
    My s4;
    ...
}
Возможно ли как нибудь все объекты класса добавить в вектор циклом???
В вашем коде нет занесения объектов в вектор
Если все объекты однотипны, то их действительно можно занести в вектор, как показано во 2м посте
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
05.11.2012, 22:10     Добавление объектов в вектор #7
Цитата Сообщение от Egor138 Посмотреть сообщение
Тоесть все объекты моего класса будут занесны в вектор???
В данном случае создастся 10 объектов типа M и каждый будет занесен в вектор.
Sidalex
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 3
07.07.2013, 14:09     Добавление объектов в вектор #8
привет, прочесав интернет(в векторах я не силен,но мне нужно его применить), я нашел простой способ создания вектора классов(каждый из которых инициализируется конструктором),вот

C++
1
2
int count_ob=4;
std::vector <object> mass(count_ob,object(3));
где object - класс,count_ob - количество объектов, object(3) - конструктор с параметром.
Но вот беда: мне нужно работать с размером вектора, и тут компилятор материться начинает

Пробую так(удалить первый элемент):

C++
1
mass.erase(mass.begin());
как его удалить?помогите,пожалуйста, может я массив объектов не правильно-таки создал?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
07.07.2013, 14:12     Добавление объектов в вектор #9
Цитата Сообщение от Sidalex Посмотреть сообщение
и тут компилятор материться начинает
приведите слова, которыми он браниться
Sidalex
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 3
07.07.2013, 14:34     Добавление объектов в вектор #10
он компилирует,но как доходит до удаления объекта, то builder(!!!) завершает работу.ошибок не высвечивается(во вложении)



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
#include <iostream.h>
#include <conio.h>
#include <vector.h>
#include <stdlib.h>
  class object
    {
     public:
      int a,b,c;
      float *params;
      int params_count;// êîëè÷åñòâî ГЇГ*Г°Г*ìåòðîâ
      object(){};
      object(int pc)
        {
          params_count =pc;
          params = new float[params_count];//params[0]-ГЇГ*Г°Г*ìåòð,params[1]-Гµ,params[2]-Гі
          srand(time(0));
          for(int p=0;p<params_count;p++)
          {
            a= rand()% 100;
            b= rand()% 81;
            c= rand()% 51;
          }
        }
      ~object(){delete[] params;}
      }a;
 int main()
{  int count_ob=4;
   std::vector <object> mass(count_ob,object(3));//создаю вектор
 
    for(int g=0;g<count_ob;g++)//заполняю рэндомными значениями
    {
      mass[g].a= rand()% 100;
      mass[g].b= rand()% 75;
      mass[g].c= rand()% 25;
 
    }
 
    for(int k=0;k<count_ob;k++)// вывожу каждый объект в разных(случайных)местах консоли
    {
      gotoxy(mass[k].b,mass[k].c);
      cout << "***("<<mass[k].a<<")";
    }
 
 
    mass.erase(mass.begin()); //мне как-то нужно удалить первый элемент вектора(вообще)
 
/*
........
*/
 
   getch();
   return 0;
}
Миниатюры
Добавление объектов в вектор  
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
07.07.2013, 14:36     Добавление объектов в вектор #11
Цитата Сообщение от Sidalex Посмотреть сообщение
завершает работу.
сделайте корректный оператор присваивания и конструктор копий object
Sidalex
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 3
07.07.2013, 15:01     Добавление объектов в вектор #12
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял

Добавлено через 17 минут
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.07.2013, 00:12     Добавление объектов в вектор #13
Sidalex, конструктор копий должен выделять нужное количество памяти под параметры и в цикле копировать их значения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 03:34     Добавление объектов в вектор
Еще ссылки по теме:

Вектор объектов пользовательского класса C++
C++ Не удается корректно создать вектор объектов
Как сортировать вектор объектов по определенному полю? C++

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

Или воспользуйтесь поиском по форуму:
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.07.2013, 03:34     Добавление объектов в вектор #14
Цитата Сообщение от Sidalex Посмотреть сообщение
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял
Экспериментируй, у меня тоже когдато конструктор копий выделывался, просто не константный объект принимал, сделал константный начал нормально работать.
Yandex
Объявления
08.07.2013, 03:34     Добавление объектов в вектор
Ответ Создать тему
Опции темы

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