Здравствуйте, vitaly_spb, Вы писали:
_>Подскажите пожалуйста: переделывал стандартный пример из Трельсена, ввел поле ID. Хотелось бы чтобы элемент коллекции удалялся не с определенными номером, а шел поиск по ID и элемент с нужным ID удалялся. Вот листинг самой функции удаления. Как мне сделать цикл по всем элементам? (я ввел для элемента функцию get_obj, котора одним из параметров выдает этот ID).
В качестве элемента вектора заводишь структуру
struct _item
{
IDispatch* pDisp;
long lId;
};
Удаление:
STDMETHODIMP CSquiggleCollection2::Remove(long lId)
{
// Be sure we are in range.
for(int i = 0; i < m_vecSquiggles.size();i++)
{
// Find the correct squiggle.
if (m_vecSquiggles[i].lId == lId){
IDispatch* pDisp = m_vecSquiggles[i];
pDisp->Release();
m_vecSquiggles.erase(m_vecSquiggles.begin() + i);
return S_OK;
}
}
return E_FAIL;
}
Это нужно еще Advise немного переделать.
А вообще, такие вещи на map'е делать — самое то!