Как инициализировать вектор указателей

Я работаю над программой на C++, и мне нужно инициализировать вектор указателей. Я знаю, как инициализировать вектор, но если бы кто-нибудь мог показать мне, как инициализировать его как вектор, заполненный указателями, это было бы здорово!

Ознакомьтесь с stackoverflow.com/questions/258871/, чтобы увидеть используемые векторы.   —  person Joshua Vaughan    schedule 01.02.2012

также stackoverflow.com/questions/817263/   —  person Joshua Vaughan    schedule 01.02.2012

См. также:  Makefile не находит библиотеки
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Joshua Vaughan

    Вектор указателей нулевого размера:

    std::vector<int*> empty;
    

    Вектор нулевых указателей:

    std::vector<int*> nulled(10);
    

    Вектор указателей на недавно выделенные объекты (хотя это и не инициализация):

    std::vector<int*> stuff;
    stuff.reserve(10);
    for( int i = 0; i < 10; ++i )
        stuff.push_back(new int(i));
    

    Инициализация вектора указателей на вновь выделенные объекты (требуется С++ 11):

    std::vector<int*> widgets{ new int(0), new int(1), new int(17) };
    

    Более умная версия № 3:

    std::vector<std::unique_ptr<int>> stuff;
    stuff.reserve(10);
    for( int i = 0; i < 10; ++i )
        stuff.emplace_back(new int(i));
    

    Спасибо, ребята, это помогает! person Joshua Vaughan; 01.02.2012

    Бу за исключение небезопасности! :-) person Joshua Vaughan; 01.02.2012

    emplace_back ничего не покупает со скалярными типами, такими как указатели. person Joshua Vaughan; 01.02.2012

    @FredOverflow: конструктор unique_ptr является явным, поэтому вам нужно либо использовать emplace_back, либо stuff.push_back(std::unique_ptr<int>(new int(i)));. Между ними emplace_back намного чище. person Joshua Vaughan; 01.02.2012

    @JamesMcNellis Я исправлен. person Joshua Vaughan; 01.02.2012

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: