Вопрос по STL
От: Daimond Россия  
Дата: 09.01.04 10:30
Оценка:
Здравствуйте!

Пишу следующий код:

struct TData{  //Моя рабочая структура
    int A, B;
};

list<TData> DataList;  //Лист структур


Добавляю в лист структуру:

TData DataIn;
 DataIn.A = 1; DataIn.B = 2;
 DataList.insert(DataList.begin(), DataIn);


Теперь хочу получить добавленную структур. Наверное, так:

 list<TData>::iterator DataOut = Data.begin();


А как мне теперь добраться до полей A и В полученной структуры?

Заранее благодарю за помощь.

С уважением, Дмитрий.
Re: Вопрос по STL
От: Андрей Россия  
Дата: 09.01.04 10:36
Оценка:
Здравствуйте, Daimond, Вы писали:

 list<TData>::iterator DataOut = Data.begin();

 
 DataOut->A = 0;
 DataOut->B = 1;
 
Re: Вопрос по STL
От: Аноним  
Дата: 09.01.04 10:37
Оценка:
DataOut->A, DataOut->B;
Re: Вопрос по STL
От: davenger  
Дата: 09.01.04 10:38
Оценка:
Здравствуйте, Daimond, Вы писали:

D>Здравствуйте!


D>Пишу следующий код:


D>
D>struct TData{  //Моя рабочая структура
D>    int A, B;
D>};

D>list<TData> DataList;  //Лист структур
D>


D>Добавляю в лист структуру:


D>
D>TData DataIn;
D> DataIn.A = 1; DataIn.B = 2;
D> DataList.insert(DataList.begin(), DataIn);
D>


D>Теперь хочу получить добавленную структур. Наверное, так:


D>
D> list<TData>::iterator DataOut = Data.begin();
D>


D>А как мне теперь добраться до полей A и В полученной структуры?


D>Заранее благодарю за помощь.


D> С уважением, Дмитрий.


Итератор имеет семантику указателя (т.е. ты можешь через него обращаться к структуре, как будто DataOut имеет тип TData*):
DataOut->A и DataOut->B
Re: Вопрос по STL
От: a-lex Россия  
Дата: 09.01.04 10:39
Оценка:
Здравствуйте, Daimond, Вы писали:
[]
D>
D>struct TData{  //Моя рабочая структура
D>    int A, B;
D>};
D>list<TData> DataList;  //Лист структур
D>

[]
D>Теперь хочу получить добавленную структур. Наверное, так:
D>
D> list<TData>::iterator DataOut = Data.begin();
D>

D>А как мне теперь добраться до полей A и В полученной структуры?

DataOut->B = DataOut->A * 2;
TData anotherCopy = *DataOut;
Re: Вопрос по STL
От: jazzer Россия Skype: enerjazzer
Дата: 09.01.04 11:04
Оценка:
Здравствуйте, Daimond, Вы писали:

D>Здравствуйте!


D>Пишу следующий код:


D>
D>struct TData{  //Моя рабочая структура
D>    int A, B;
D>};

D>list<TData> DataList;  //Лист структур
D>


D>Добавляю в лист структуру:


D>
D>TData DataIn;
D> DataIn.A = 1; DataIn.B = 2;
D> DataList.insert(DataList.begin(), DataIn);
D>


D>Теперь хочу получить добавленную структур. Наверное, так:


D>
D> list<TData>::iterator DataOut = Data.begin();
D>


D>А как мне теперь добраться до полей A и В полученной структуры?


а ты пиши проще:

TData& data = *Data.begin();

data.A = 0;
data.B = 8;
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Вопрос по STL
От: Bell Россия  
Дата: 09.01.04 11:48
Оценка:
Здравствуйте, Daimond, Вы писали:

D>Добавляю в лист структуру:


D>
D>TData DataIn;
D> DataIn.A = 1; DataIn.B = 2;
D> DataList.insert(DataList.begin(), DataIn);
D>


Лучше так:

DataList.push_front(DataIn);



D>Теперь хочу получить добавленную структур. Наверное, так:


D>
D> list<TData>::iterator DataOut = Data.begin();
D>


D>А как мне теперь добраться до полей A и В полученной структуры?



DataOut->A = ...
DataOut->B = ...
или 
(*DataOut).A = ...
(*DataOut).B = ...


ЗЫ
DataOut и DataIn имеют разные типы, чего не видно по именам. ИМХО лучше вместо DataOut писать itDataOut — тогда сразу ясно, что это итератор.
Или объявить DataOut так:

TData& DataOut = *Data.begin();
или
TData& DataOut = Data.front();
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.