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