Aiuto con i vector

ho un vector < pair <int, pair <int,int> > >, come posso:

  1. eliminare un’intera posizione del vector, anche dal mezzo, c’è una funzione?
    Ho provato con Vec.erase(Vec.begin() + eliminato); dove eliminato è l’indice della posizione da eliminare, ma non funziona…
  2. ordinare il vector in base alla cella Vec.second.second

Intanto per me è più comodo usare un vector<array<int,3>> vec( al posto del 3 puoi mettere qualsiasi numero, e per accedere a una cella si usa vec[i][0] per esempio). Magari usa anche un typedef array<int,3> i3; per comodità ( o #define se preferisci).
Per il punto 2,
bool cmp(const i3& a, const i3& b){
return a[2]<b[2];
}
sort(vec.begin(), vec.end(),cmp);
cmp si può modificare a piacimento in base alle necessità.
Per il punto 1 non saprei, prova a guardare su cpp reference. In ogni caso, eliminare in un vector è lento( proporzionale alla distanza tra la posizione e la fine, credo. Di solito si usa solo pop_back per eliminare l’ultimo elemento, e se serve eliminare tante volte in posizioni a caso, si usa un set/map,guarda cppreference per vedere come funzionano).

grazie, per quanto riguarda il punto 1 avevo pensato di usare un push_back e in seguito un pop_back ma non conosco molto bene le funzioni dei vector
Per il punto 2 mi dice [Error] ‘array’ was not declared in this scope

Per il punto 2 credo sia un problema di libreria. Per le olimpiadi di solito è comodo usare #include<bits/stdc++.h>, che include tutte le librerie utili, altrimenti la libreria specifica dovrebbe essere array.