Добавление Обьекта В Вектор

Тема в разделе "C/C++/C#", создана пользователем Norden26, 19 сен 2012.

Статус темы:
Закрыта.
  1. Norden26

    Norden26 Гость

    Надо добавить экземпляр класса Abonent в вектор book.
    Код (C++):
    #include <iostream>
    #include <vector>

    typedef unsigned short ushort;

    using namespace std;

    class Abonent
    {
    public:
    Abonent()
    {
    this->name = NULL;
    this->number = 0;
    }
    Abonent(const char * name, ushort number)
    {
    this->name = strcpy(new char [strlen(name)+1], name);
    this->number = number;
    }
    ~Abonent()
    {
    if(name)
    delete name;
    }
    void print()
    {
    cout<<this->name<<" "<<this->number<<endl;
    }
    private:
    char * name;
    ushort number;
    };

    void main()
    {
    Abonent abonent0("Vasia", 123);
    vector <Abonent> book;  // vector
    vector <Abonent>::iterator it = book.begin();
    book.insert(it, abonent0);
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    http://cplusplus.com/reference/stl/vector/

    при выходе из области видимости из под вектора освобождается память, при этом вызываются деструкторы всех его элементов. деструктор abonent0 вызывается также. Из под одного объекта дважды освобождаешь память. В векторе храни указатели.

    Добавлено:
    Код (Text):
    int main() {
    Abonent abonent0("Vasia", 123);
    vector <Abonent*> book; // vector
    vector <Abonent*>::iterator it = book.begin();
    book.insert(it, &abonent0);
    return 0;
    }
    Добавлено: используй push_back() а не insert.
    Если нужно добавлять в начало - используй дек и push_front.
    http://cplusplus.com/reference/stl/deque/
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей