Intanto indenta bene il codice:

codice:
for (int i = 0; i < presenzemultiple.size(); i++) 
{
    if (presenzemultiple[i] == presenzemultiple[i+1]) 
    {
        contatorevolte++;
        cout << "\n contatore volte: ";
        cout << contatorevolte;
        cout << "\n";
        if (contatorevolte>3)  
        {
            cout << "QUESTO VALORE : ";
            cout << presenzemultiple[i];
            cout << " sembra essere presente ";
            cout << contatorevolte;
            cout << " volte... verificare!";
            cin.get();
            sceltissimi.push_back(presenzemultiple[i]);
            contatorevolte=0;
        }
    }
}
Allora stai uscendo dall' array quando viene eseguito il confronto presenzemultiple == presenzemultiple[i+1] perché nell' ultima iterazione i vale size()-1 e stai chiedendo l' elemento presenzemultiple[i+1], che è un elemento che sta al di fuori del vettore.
Poi non va bene fare un solo for, devi fare due for annidati perché il tuo scopo è verificare quali sono le ripetizioni all' interno dell' array, quindi se hai gli elementi:

codice:
indice: i, valore: 4
indice i, valore: 5
indice i valore: 4
Se esegui l' algoritmo su questa porzione di array contatorevolte non viene mai incrementato.Poi prima di pushare un elemento nell' array devi verificare che nons ia già presente.