Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Contenitore a capienza infinita di stringhe .
- - costruttore con dimensione iniziale
- - costruttore che riceve un array
- - costruttore che riceve il nome di un file
- - stampa()
- - is_empty(): è vuoto?
- - size(): quanti elementi sono attualmente presenti
- - push_back(stringa): aggiunte la stringa al contenuto
- - clear(): svuota il vector
- - at(posizione): restituisce l'elemento alla posizione indicata
- */
- #include <iostream>
- #include <fstream>
- using namespace std;
- class MyVector {
- public:
- MyVector() {}
- MyVector(string vs[], int quante) {
- v = new string[quante];
- for (inseriti=0; inseriti<quante; inseriti++)
- v[inseriti] = vs[inseriti];
- capienza=inseriti;
- }
- MyVector(string nome_file)
- {
- ifstream f(nome_file);
- string riga="";
- while (getline(f, riga)) push_back(riga);
- f.close(); f.clear();
- }
- void stampa()
- {
- for (int i=0; i<inseriti; i++)
- cout << v[i] << endl;
- }
- void push_back(string s){
- if (inseriti==capienza)
- {
- string *temp = new string[2*capienza];
- for (int i=0;i<inseriti;i++)
- temp[i] = v[i];
- delete [] v;
- v = temp;
- capienza*=2;
- }
- v[inseriti] = s;
- inseriti++;
- }
- bool is_empty () {
- return inseriti==0;
- }
- int size() {return inseriti;}
- void clear() {inseriti=0;}
- void reset() {
- delete[] v;
- inseriti=0;
- }
- string at(int posizione)
- {
- if (posizione<0 || posizione>=inseriti)
- throw invalid_argument("Posizione non valida\n");
- else
- return v[posizione];
- }
- ~MyVector() {
- if (capienza>0) delete[] v;
- }
- private:
- string *v = nullptr;
- int capienza = 0;
- int inseriti = 0;
- };
- int main()
- {
- string v[] = {"s1", "s2", "s3"};
- MyVector myVect = MyVector(v, 3);
- //myVect.stampa();
- myVect.push_back("s4");
- myVect.push_back("s5");
- //myVect.stampa();
- try {
- //cout << myVect.at(3);
- }
- catch (invalid_argument e)
- {
- cout << e.what() << endl;
- }
- MyVector myVect2 = MyVector("dati.txt");
- myVect2.stampa();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement