Здравствуйте!
Пишу следующий код:
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 и В полученной структуры?
Заранее благодарю за помощь.
С уважением, Дмитрий.
Здравствуйте, Daimond, Вы писали:
list<TData>::iterator DataOut = Data.begin();
DataOut->A = 0;
DataOut->B = 1;
Здравствуйте, 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
Здравствуйте, 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;
Здравствуйте, 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;
Здравствуйте, 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();