|
14.04.2012, 17:57
|
#1
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Vector и объект класса
допустим нужно организовать список объектов класса
Class C_a
{
float nx;
};
C_a a;
vector<C_a>list_a;
list_a.pushback(a); //1
list_a.pushback(a);//2
получается что вектор копирует объект в себя тк при обращении к 1 или 2 значения nx у каждого свои )
как вообще правильно сделать это дело ?
в с++ Нуб )
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
|
(Offline)
|
|
14.04.2012, 19:59
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Vector и объект класса
ты забыл написать, какой результат ты хочешь получить.
чтобы были одинаковые объекты в list_a[0] и list_a[1]?
ну суй в вектор не объект, а указатель на объект или идентификатор объекта в другом массиве.
|
(Offline)
|
|
14.04.2012, 20:58
|
#3
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Vector и объект класса
vector<C_a*>list_a;
list_a.pushback(&a); //1
list_a.pushback(&a);//2
только это какая-то лажа. какой результат хочешь получить?
|
(Offline)
|
|
14.04.2012, 21:39
|
#4
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Ответ: Vector и объект класса
список объектов класса к которым можно было бы обращатся
как бы аналог блиц type
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
|
(Offline)
|
|
14.04.2012, 22:24
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Vector и объект класса
работать с указателями объектов
|
(Offline)
|
|
15.04.2012, 11:18
|
#6
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Ответ: Vector и объект класса
#include <iostream>
#include <vector>
using namespace std;
class Tman
{
public:
Tman(int temp_x);
~Tman();
int get_x();
void set_x(int temp_x);
private:
int x;
};
Tman::Tman(int temp_x)
{
x=temp_x;
};
Tman::~Tman()
{
//что писать в деструкторе
};
int Tman::get_x()
{
return x;
};
void Tman::set_x(int temp_x)
{
x=temp_x;
};
vector<Tman>list_mans;
int main()
{
list_mans.push_back(Tman(2));
list_mans.push_back(Tman(3));
list_mans.push_back(Tman(6));
for(int i=0;i<list_mans.size();i++)
{
cout<<list_mans[i].get_x()<<"\n";
}
list_mans[2].set_x(88);
for(int i=list_mans.size()-1;i>=0;i--)
{
cout<<list_mans[i].get_x()<<"\n";
}
return 0;
}
хотелось бы узнать адекватно это или нет?
и если нет то как адекватнее, лучше с коротким примером и немного объяснения
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
|
(Offline)
|
|
15.04.2012, 14:56
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Vector и объект класса
Лафоре Р. Объектно-ориентированное программирование в С++. 4-е издание — СПб.: Питер, 2005. — 924 с.
upd: кроме шуток.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.04.2012, 14:37
|
#8
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Vector и объект класса
Сообщение от Mr_F_
ты забыл написать, какой результат ты хочешь получить.
чтобы были одинаковые объекты в list_a[0] и list_a[1]?
ну суй в вектор не объект, а указатель на объект или идентификатор объекта в другом массиве.
|
инициировать с new все, что попадает в вектор, кроме строк! иначе они со стека поудаляются нахрен, и в векторе будут лежать невалидные объекты.
|
(Offline)
|
|
16.04.2012, 16:50
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Vector и объект класса
Сообщение от pozitiffcat
инициировать с new все, что попадает в вектор, кроме строк! иначе они со стека поудаляются нахрен, и в векторе будут лежать невалидные объекты.
|
три раза перечитал - не понял. Перескажи другими словами, пожалуйста.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
16.04.2012, 17:10
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Vector и объект класса
я думаю, он имел ввиду, что не стоит забывать, что объекты, указатели на которые ты кидаешь в вектор, надо создавать через new, а не объявляеть на стеке где попало, иначе они удалятся после выхода из контекста, а указатели сделаются невалидными)
впрочем, тут необязательно именно через new. просто надо следить, чтобы время жизни объектов совпадало с временем жизни контейнера.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.04.2012, 18:08
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Vector и объект класса
Стоит при этом отметить, что память под строковые литералы (const char*) выделяется статически
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.04.2012, 08:16
|
#12
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Vector и объект класса
Сообщение от Mr_F_
я думаю, он имел ввиду, что не стоит забывать, что объекты, указатели на которые ты кидаешь в вектор, надо создавать через new, а не объявляеть на стеке где попало, иначе они удалятся после выхода из контекста, а указатели сделаются невалидными)
впрочем, тут необязательно именно через new. просто надо следить, чтобы время жизни объектов совпадало с временем жизни контейнера.
|
Да. все верно
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:25.
|