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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

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

05.11.2012, 21:18. Просмотров 2126. Ответов 13
Метки нет (Все метки)

У меня есть класс в котором очень много объектов. Мне нужно все объекты добавить в вектор, но делать это вот так очень долго:

C++
1
2
3
4
5
6
7
8
9
10
class My {};
 
int main() {
    
    My s1;
    My s2;
    My s3;
    My s4;
    ...
}
Возможно ли как нибудь все объекты класса добавить в вектор циклом???
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 21:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление объектов в вектор (C++):

Вектор объектов function - C++
Объясните пожалуйста, почему так работает void f() { cout<<"hi"; } int main() { vector<function<void()>>v; ...

Вектор из объектов класса - C++
Добрый вечер) Подскажите пж, что не так? Вот код программы: В файле class.h: #ifndef CLASS_H_INCLUDED #define...

Вектор объектов класса - C++
Всем привет! Несколько недель назад я писал сюда по поводу одной задачи. Она заключается в том, чтобы реализовать класс "Зоомагазин" с...

Вектор объектов пользовательского класса - C++
Привет всем! Есть класс Automaton, я пытаюсь создать вектор Sample с объектами этого класса, а они ведут себя не так, как я ожидаю -...

STL вектор динамических объектов - C++
Нужно время от времени ложить в std::vector (или std::list) динамические объекты. Под динамическим объектом здесь понимается объект,...

Вектор объектов класса и алгоритмы - C++
Просветите, пожалуйста, по вопросу: Пусть у нас есть класс, к примеру такой class myclass { int a, double b } со всеми...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 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;
    }
1
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.11.2012, 21:43 #3
C++
1
2
vector<My> vec(4);
vec[0] = My(какие то данные);
1
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;
    }

Тоесть все объекты моего класса будут занесны в вектор???
0
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 1
05.11.2012, 21:59 #5
Цитата Сообщение от Egor138 Посмотреть сообщение
Тоесть все объекты моего класса будут занесны в вектор???
Я просто не совсем понял что Вам нужно =)
1
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м посте
1
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 1
05.11.2012, 22:10 #7
Цитата Сообщение от Egor138 Посмотреть сообщение
Тоесть все объекты моего класса будут занесны в вектор???
В данном случае создастся 10 объектов типа M и каждый будет занесен в вектор.
0
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());
как его удалить?помогите,пожалуйста, может я массив объектов не правильно-таки создал?
0
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 1
07.07.2013, 14:12 #9
Цитата Сообщение от Sidalex Посмотреть сообщение
и тут компилятор материться начинает
приведите слова, которыми он браниться
0
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;
}
0
Миниатюры
Добавление объектов в вектор  
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 1
07.07.2013, 14:36 #11
Цитата Сообщение от Sidalex Посмотреть сообщение
завершает работу.
сделайте корректный оператор присваивания и конструктор копий object
1
Sidalex
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 3
07.07.2013, 15:01 #12
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял

Добавлено через 17 минут
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял
0
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.07.2013, 00:12 #13
Sidalex, конструктор копий должен выделять нужное количество памяти под параметры и в цикле копировать их значения
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.07.2013, 03:34 #14
Цитата Сообщение от Sidalex Посмотреть сообщение
ммм...конструктор копий...вы сможете подсказать, как его реализовать лучше? и насчет оператора присваивания я не очень понял
Экспериментируй, у меня тоже когдато конструктор копий выделывался, просто не константный объект принимал, сделал константный начал нормально работать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 03:34
Привет! Вот еще темы с ответами:

Передать вектор объектов в дружественную функцию - C++
Я думаю передать вот так, но почему-то синтаксическая ошибка. filtr_tup(vector&lt;OC&gt;); #ifndef OC_H #define OC_H #include...

Вектор объектов, заполнение через Set - C++
Как правильно организовать безразмерный вектор наполненный объектами класса? И как потом например его заполнять, если ниже способ применить...

Не удается корректно создать вектор объектов - C++
Доброго времени суток. Есть класс: class Spline//Сплайн Эрмита { private: float *x; float *y; int count; int...

Как сортировать вектор объектов по определенному полю? - C++
Можно ли сортировать вектор объектов по определенному полю, например по имени студента? Спасибо за помощь?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.07.2013, 03:34
Ответ Создать тему
Опции темы

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