penso sia una cosa abbastanza semplice ma non riesco a capire bene come funzionano i void, nel senso che li devo usare per forza per risolvere alcuni problemi perché me lo impone il testo e ogni volta mi servono solo per modificare dei vettori ma poi non so come averli con le modifiche nel main o in altre funzioni, perché col return non funziona. un esempio di codice dove ho questo problema è questo:
#include <iostream>
#include <cassert>
#include <utility>
#include <vector>
using namespace std;
int valAss(int n){
if(n<0){
n=n*(1);
}
return n;
}
void apri(long long p, vector<int> V) {
V.push_back(p);
}
void chiudi(long long p, vector<int> V) {
int c;
for(int i=0; i<sizeof(V); i++){
if(p==V[i]){
c=i;
}
}
for(int i=c; i<sizeof(V); i++){
V[i]=V[i+1];
}
}
long long chiedi(long long p, vector<int> V) {
int r=-1;
if(sizeof(V)>0){
r=V[0];
for(int i=0; i<sizeof(V); i++){
if(valAss(V[i]-p)<valAss(r-p) and V[i]>r){
r=V[i];
}
}
}
return r;
}
void inizia(char t, long long p, int Q, vector<int> V) {
if(t=='a'){
apri(p,V);
}else if(t=='c'){
chiudi(p,V);
}else{
cout << chiedi(p,V);
}
return;
}
void inizia(char t, long long p, int Q, vector<int> V);
void apri(long long p, vector<int> V);
void chiudi(long long p, vector<int> V);
long long chiedi(long long p, vector<int> V);
int main() {
int Q;
cin >> Q;
vector<int> V;
for (int i = 0; i < Q; i++){
long long p;
char t;
cin >> t >> p;
inizia(t,p,Q,V);
}
return 0;
}
non so se effettivamente il problema sia nel fatto che li modifico in un void o se a prescindere non posso “returnare” dei vettori