Вопрос по STL(как этим пользоваться)
От: Аноним  
Дата: 26.05.03 07:57
Оценка:
Есть допустим у меня структура:

typedef struct USERDATA_INFO
{
int iAccountType;
LPCTSTR lpUserName;
......
.......
} USERDATA_INFO, *LPUSERDATA_INFO;

list<LPUSERDATA_INFO> user_data;

Вопрос: Как теперь для 10 юзеров заполнить эту структуру.
Я делаю стандартно таким образом:
int user_num = 10;
user_data = (LPUSERDATA_INFO *) malloc(user_num * sizeof(LPUSERDATA_INFO));

потом при добавлении юзера
user_data[0] = (LPUSERDATA_INFO) realloc((user_count + 1)sizeof(USERDATA_INFO));
user_data[0] = (LPUSERDATA_INFO) malloc(sizeof(USERDATA_INFO));
user_data[0]->iAccountTipe = 0;
........
.........
и.т.д.
Трабл в том , что потом надо удалять юзеров добавлять новых, вобщем надо помучиться.
Я слышал что пользуя STL это все можно сделать гораздо проще(если уметь), красивее и грамотнее.
Re: Вопрос по STL(как этим пользоваться)
От: Sergeem Израиль  
Дата: 26.05.03 08:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть допустим у меня структура:


А>typedef struct USERDATA_INFO

А>{
А> int iAccountType;
А> LPCTSTR lpUserName;
А> ......
А> .......
А>} USERDATA_INFO, *LPUSERDATA_INFO;

А>list<LPUSERDATA_INFO> user_data;


А>Вопрос: Как теперь для 10 юзеров заполнить эту структуру.


...

А> Трабл в том , что потом надо удалять юзеров добавлять новых, вобщем надо помучиться.

А> Я слышал что пользуя STL это все можно сделать гораздо проще(если уметь), красивее и грамотнее.

Действительно, в STL это проще, поскольку не надо заботиться о размещении/удалении памяти.
Например:

struct USERDATA_INFO
{
  // желательно иметь default constructor
  USERDATA_INFO()
    : iAccountType(-1) {}

  // просто удобно для создания объектов
  USERDATA_INFO(int accType, const std::string &userName)
    : iAccountType(accType), lpUserName(userName) {}

    int iAccountType;
    std::string lpUserName;
    ......
    .......
};

std::list<LPUSERDATA_INFO> user_data;

user_data.push_back(USERDATA_INFO (1, "Vasia"));
user_data.push_back(USERDATA_INFO (2, "Masha"));


Для работы с элементами STL-контейнеров используются итераторы.
Также советую посмтреть другие контейнеры: std::vector, std::map.

Вообще, читай мануалы побольше!
Творческих успехов!
Serge.

Hасколько проще была бы жизнь, если бы она была в исходниках.
Re: Вопрос по STL(как этим пользоваться)
От: execeter  
Дата: 26.05.03 08:48
Оценка:
прочти
http://www.codeproject.com/vcpp/stl/stl101b.asp
Re[2]: Вопрос по STL(как этим пользоваться)
От: Аноним  
Дата: 26.05.03 09:04
Оценка:
Здравствуйте, Sergeem, Вы писали:

S>Вообще, читай мануалы побольше!

S>Творческих успехов!

Спасибо! А что конкретно можно почитать?И если можно с большим колличеством примеров. А то я в инете нашел кое-что
нашел, но там в основном мелкие примеры и все на одно лицо:

list<int> int_list;

for(int i = 0; i < 10; i++)
int_list.push_front(i);

и все. А чего-то более серьезного пока не видел.
Спасибо.
Re[3]: Вопрос по STL(как этим пользоваться)
От: Sergeem Израиль  
Дата: 26.05.03 09:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Sergeem, Вы писали:


S>>Вообще, читай мануалы побольше!

S>>Творческих успехов!

А>Спасибо! А что конкретно можно почитать?И если можно с большим колличеством примеров. А то я в инете нашел кое-что

А>нашел, но там в основном мелкие примеры и все на одно лицо:
...

Я учился по доке с сайта SGI.
Потом у Струпа добрал.

Еще есть хорошая книжка Степанова, но я не помню ее названия, поищи в инете.
Serge.

Hасколько проще была бы жизнь, если бы она была в исходниках.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.