Untitled

mail@pastecode.io avatar
unknown
c_cpp
3 years ago
1.6 kB
2
Indexable
Never
#include <iostream>
#define CAPACITY 50

using namespace std;

class StaticContainer {
public:
	StaticContainer() {
		usedValues = 0;
	}
	int getUsedValues() {
		return usedValues;
	}
	int count(int value); //Funzione conteggio
	int remove(int value); //Funzione cancella
	bool removeOne(int value); //Funzione cancella uno
	void add(int value); //Funzione inserisci
	int checkElement(int value); //Necessaria per eseguire funzione +=
	void operator += (StaticContainer istance);
	int getElements(int i); //Fondamentale per eseguire la inline operator +
private:
	int elements[CAPACITY];
	int usedValues;
};

//Sovraccarico gli operatori
inline StaticContainer operator + (StaticContainer firstIstance, StaticContainer secondIstance) {
	StaticContainer istance = StaticContainer();
	int i = 0;
	int j = 0;
	while (i < firstIstance.getUsedValues() || j < secondIstance.getUsedValues()) { //Fino all' ultimo elemento utilizzato per ogni contenitore
		/*E' importantissimo rompere il ciclo quando arrivo alla fine per evitare che in un contenitore ho 11 elementi e nell' altro 10 e si provi a 
		sommare l' 11 elemento del contenitore con un elemento non inizalizzato del secondo*/
		istance.add(firstIstance.getElements(i) + secondIstance.getElements(j));
		i++;
		j++;
		if (i == firstIstance.getUsedValues() || j == secondIstance.getUsedValues())
			break;
	}
	return istance;
}
inline ostream& operator << (ostream& out, StaticContainer& istance) {
	for (int i = 0; i < istance.getUsedValues(); i++)
		out << istance.getElements(i) << " ";
	return out;
}