47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
1

vector объектов структуры

29.01.2013, 06:38. Показов 1463. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте господа програмисты,возникла у меня трудность,в програмке будет присутствовать неизвестное заранее количество координат максимум где-то под 2000-2500(8 integer на объект).Но в большинстве случаев будут использоваться всего 30-100 и было у меня в мыслях уже писать массив объектов структуры на 2500 персон да вот попалась на глаза книга по STL а там пречудесный вещ vector.
Тока обрадовался я раньше времени в vector оказывается вхожи лишь объекты с пустым конструктором.
А в чём всё-таки смысл если нельзя передать свойства объекту структуры в векторе?
У меня пока остаётся 2 варианта:либо лепить 8 векторов(на каждую координату)либо стандартный массив на максимум объектов.
Может подскажете вариант повеселее?

Добавлено через 2 минуты
видел на форуме пример такого рода
C++
1
2
3
4
vector <tovar*> tovar_list; //лучше-таки  указатели
tovar tr;
tovar_list.push_back(&tr);
tovar_list[0]->name = "orange";
но лезть в динамическое распределение памяти очень не хочется
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2013, 06:38
Ответы с готовыми решениями:

Создать vector из объектов класса
Добрый вечер! У меня есть некий класс SuperClass, в котором есть динамическое поле: class...

Заполнение структуры из vector
Доброго времени суток. Имеется такого вида структура: struct Point { Point (void);...

Массив объектов пользовательского типа в vector
Доброго времени суток. Кто может подсказать что храниться в vector&lt; Employer* &gt; employerArray ( 4...

Vector, хранящий разные структуры
Решил на C++ написать программу, которая может в 1 массиве (векторе) хранить разные структуры....

10
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
29.01.2013, 11:37 2
Структура для координат:
C++
1
2
3
4
struct coordinate
{
    int X1,X2,X3,X4,X5,X6,X7,X8;
};
Чудо код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    
vector <coordinate> H;
coordinate ST1;
 
ST1.X1 = 1;
H.push_back(ST1);
 
ST1.X1 = 8;
H.push_back(ST1);
 
ShowMessage(IntToStr(H[0].X1));//Выдаст 1
ShowMessage(IntToStr(H[1].X1));//выдаст 8
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
29.01.2013, 12:02 3
Цитата Сообщение от ijonhson Посмотреть сообщение
Тока обрадовался я раньше времени в vector оказывается вхожи лишь объекты с пустым конструктором.
Почему же?
C++
1
vector_name.push_back(class_name(param1, param2));
1
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
29.01.2013, 23:18  [ТС] 4
спасибо вроде разобрался единственный вопрос:
заполняю элемент массива, но вместо введённых значений там какой-то мусор может глянете?
в classesij.cpp создан vector объектов далее заполнено 0-вой объект и выведено значение 0-го шовмессаджем ерись одним вловом
Вложения
Тип файла: rar IJокна.rar (455.7 Кб, 11 просмотров)
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
29.01.2013, 23:57 5
C++
1
2
3
4
5
6
7
8
massive::massive(int xl,int yl,int x1l,int y1l,int lrtbl)//конструктор класса массива объектов
{
xl=x; // тут и далее надо присваивать наоборот
yl=y;
x1l=x1;
y1l=y1;
lrtbl=lrtb;
}
1
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
30.01.2013, 00:57  [ТС] 6
Спасибо я догадывался что где-то детская ошибка но глаз ещё не намётан.
0
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 11
19.05.2013, 20:07 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct coord
    {
        double x,y;
    };
    vector<coord> v1(4);
    for (int i=0; i<4; i++)
    {
        double x,y;
        cout<<"Введите координаты "<<i<<"ой точки первого множества: ";
        cin>>x>>y;
        cout<<endl;
        coord tochka;
        tochka.x=x;
        tochka.y=y;
        v1.push_back(tochka);
    };
у меня похожая проблема( можете подсказать, где ошибка? в процессе компиляции никаких ошибок не выскакивает, но в tochka не запоминаются данные, а в вектор и тем более..
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
19.05.2013, 20:11 8
как проверяли?
0
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 11
19.05.2013, 20:16 9
точку остановы ставила около цикла
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
19.05.2013, 20:42 10
Цитата Сообщение от migtymasha Посмотреть сообщение
vector<coord> v1(4);
заменить на
vector<coord> v1;
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 11
19.05.2013, 21:47 11
I.M., спасибо) стало лучше, правда теперь неправильно считает расстояние между точками, но хоть как-то считает)

Добавлено через 6 минут
I.M., можете сказать, правильно ли написано?

C++
1
2
3
4
5
6
7
for(int i=0; i<4; i++)
    {
        for (int j=i+1; j<4; j++)
        {
            m[i][j]=sqrt(pow(v1[i].x-v1[j].x,2)+pow(v1[i].y-v1[j].y,2));
        };
    };
Добавлено через 43 минуты
все норм, это я дебил)
0
19.05.2013, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2013, 21:47
Помогаю со студенческими работами здесь

Редактирование и сохранение структуры <vector>
Доброго времени суток, не могу ума приложить, как реализовать функцию для редактирования данных в...

Определить массив объектов системы через vector
Есть массив объектов, в main, вывод нужно реализовать с помощью vector #include&quot;Сontributor.h&quot;...

Sort vector, сортировка по двум полям структуры
Поскажите как отсортировать если: struct DATA{ string fir; string sec; double sm;...

Как добавить элемент структуры с использованием #include <vector> ?
#include &lt;vector&gt; #include &lt;iostream&gt; using namespace std; struct Item { int n; };


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru