Вставка определенного элемента в вектор

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

Допустим, у меня есть vector<PetStore*> pets, и у каждого объекта PetStore есть несколько геттеров и сеттеров. Я хочу установить/вставить определенный элемент по определенному индексу в векторе. Я также хочу вызвать метод bool setAdopted(bool adopted) для вставленного питомца и установить для него значение true.

/*
     Pseudo code
     pets.insert(pets.begin()+i, setAdopted(true));
*/

person jdog    schedule 26.11.2016    source источник
comment
Я не могу понять ваш пример, но вот пример того, как вставить вектор: stackoverflow.com/questions/6726805/   -  person Yves    schedule 26.11.2016
comment
Попробуйте это: pets[specific_index].setadopted(true);   -  person MD Ruhul Amin    schedule 26.11.2016
comment
@Thomas Я видел это раньше, но я работаю с ООП.   -  person jdog    schedule 26.11.2016
comment
@ruhul Спасибо, но это не сработало.   -  person jdog    schedule 26.11.2016
comment
Покажите, как бы вы сделали это на Java. В настоящее время вы не представили никаких доказательств попытки, кроме псевдокода, который я не признаю ни Java, ни C++.   -  person smac89    schedule 26.11.2016
comment
Поскольку позже вы изменили тип указателя, попробуйте pets[specific_index]->setadopted(true); или pets.at(specific_index)->setadopted(true); вместо pets[specific_index].setadopted(true); ;   -  person MD Ruhul Amin    schedule 26.11.2016


Ответы (1)


Я хочу установить/вставить определенный элемент по определенному индексу

Вставлять

PetStore *item;
item = new PetStore();
vector<PetStore*> pets;
vector<PetStore*>::iterator it;
it = pets.begin();
it = pets.insert ( it , item );
// another way.. 
pets.insert (it,2,item);

Установлен:

pets.at(indx)->setadopted(true);

Ссылки: vector/insert

person MD Ruhul Amin    schedule 26.11.2016
comment
Предполагая, что PetStore определен как тип указателя, ваш ответ будет правильным. - person smac89; 26.11.2016
comment
Спасибо! Наконец-то он скомпилирован - person jdog; 26.11.2016