1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Вопросы новичков и не только", создана пользователем Norden26, 19 сен 2012.

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

    Norden26 Гость

    Репутация:
    0
    Надо добавить экземпляр класса Abonent в вектор book.
    Код:
    #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 Гость

    Репутация:
    0
    http://cplusplus.com/reference/stl/vector/

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

    Добавлено:
    Код:
    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/
     
Загрузка...
Статус темы:
Закрыта.

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