#include <iostream>
#include <cstdlib>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
template <class T>
class Set
{
public:
T *p; // change
int n;
Set(){ p=nullptr; n=0;
};
Set(int n)
{
this->n = n;
p = new T[n]; // change
}
~Set()
{
if(p) delete []p;
}
void setValues(T k[],int l) // change signature
{
if (n!=l) { // if the size is the same, we'll reuse p, if not:
delete[] p; // avoid the memory to leek
p= new T[l]; // start with a fresh memory
n = l; // define new length
}
for (int i=0; i<l; i++)
p[i]=k[i]; // copy array elements one by one
}
void add(T k)
{
auto p1 = p; // improvement
p = new T[n+1];
//p = p1; nooooooooo !!
for (int i=0; i<n; i++)
p[i]=p1[i];
delete []p1; // no more leaking
p[n] = k;
n++;
}
void remove(T k)
{
//int l =0;
//auto p1 = p; // no need to reallocateimprovement
//p = new T[n-1];
int removed=0;
for(int i=0,j=0;i<n;i++)
if(p[i]!=k)
{
if (i!=j)
p[j] = p[i];
j++;
}
else removed++;
n=n-removed;
}
void operator+(Set s)
{
for(int i=0;i<n;i++)
p[i]+=s.p[i];
}
void operator-(Set s)
{
for(int i=0;i<n;i++)
p[i]-=s.p[i];
}
void operator*(Set s)
{
for(int i=0;i<n;i++)
p[i]*=s.p[i];
}
void show()
{
for(int i=0;i<n;i++)
cout<<p[i]<<" | ";
}
};
int main()
{
Set<int> s1,s2;
int arr[]={0,2,3,4,3,6};
int n=6;
float arr2[]={0.5,12.1,1.7,23.15};
char arr3[]={'a','h','m','k','c','e'};
s1.setValues(arr,n); // <------------- here is error;
s1.add(5);
s1.remove(3);
s1.show();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBTZXQKewpwdWJsaWM6CiAgICBUICpwOyAgICAgICAvLyBjaGFuZ2UKICAgIGludCBuOwogICAgU2V0KCl7IHA9bnVsbHB0cjsgbj0wOyAKICAgIH07CiAgICBTZXQoaW50IG4pCiAgICB7CiAgICAgICAgdGhpcy0+biA9IG47CiAgICAgICAgcCA9IG5ldyBUW25dOyAgIC8vIGNoYW5nZSAKICAgIH0KICAgIH5TZXQoKQogICAgewogICAgICBpZihwKSBkZWxldGUgW11wOyAKICAgIH0KICAgIHZvaWQgc2V0VmFsdWVzKFQga1tdLGludCBsKSAvLyBjaGFuZ2Ugc2lnbmF0dXJlCiAgICB7CiAgICAJaWYgKG4hPWwpIHsgICAgICAgICAgLy8gaWYgdGhlIHNpemUgaXMgdGhlIHNhbWUsIHdlJ2xsIHJldXNlIHAsIGlmIG5vdDoKICAgICAgICAJZGVsZXRlW10gcDsgICAgICAgICAgICAvLyBhdm9pZCB0aGUgbWVtb3J5IHRvIGxlZWsgCiAgICAgICAgCXA9IG5ldyBUW2xdOyAgICAgICAgICAgLy8gc3RhcnQgd2l0aCBhIGZyZXNoIG1lbW9yeSAKICAgICAgICAJbiA9IGw7ICAgICAgICAgICAgICAgICAvLyBkZWZpbmUgbmV3IGxlbmd0aAogICAgCX0KICAgICAgICBmb3IgKGludCBpPTA7IGk8bDsgaSsrKSAKICAgICAgICAgICAgcFtpXT1rW2ldOwkJCQkvLyBjb3B5IGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgCiAgICB9CiAgICB2b2lkIGFkZChUIGspCiAgICB7CiAgICAgICAgYXV0byBwMSA9IHA7ICAgIC8vIGltcHJvdmVtZW50CiAgICAgICAgcCA9IG5ldyBUW24rMV07CiAgICAgICAgLy9wID0gcDE7ICAgIG5vb29vb29vb28gISEKCQlmb3IgKGludCBpPTA7IGk8bjsgaSsrKQoJCQlwW2ldPXAxW2ldOyAKICAgICAgICBkZWxldGUgW11wMTsgCS8vIG5vIG1vcmUgbGVha2luZwogICAgICAKICAgICAgICBwW25dID0gazsKICAgICAgICBuKys7CiAgICB9CiAgICB2b2lkIHJlbW92ZShUIGspCiAgICB7CiAgICAgICAgLy9pbnQgbCA9MDsgICAgIAogICAgICAgIC8vYXV0byBwMSA9IHA7ICAgICAgLy8gbm8gbmVlZCB0byByZWFsbG9jYXRlaW1wcm92ZW1lbnQKICAgICAgICAvL3AgPSBuZXcgVFtuLTFdOwogICAgICAgIGludCByZW1vdmVkPTA7IAogICAgICAgIGZvcihpbnQgaT0wLGo9MDtpPG47aSsrKQogICAgICAgICAgICBpZihwW2ldIT1rKSAKICAgICAgICAgICAgewogICAgICAgICAgICAJaWYgKGkhPWopIAogICAgICAgICAgICAgICAgCXBbal0gPSBwW2ldOwogICAgICAgICAgICAgICAgaisrOyAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHJlbW92ZWQrKzsKICAgICAgICBuPW4tcmVtb3ZlZDsgCiAgICB9CiAgICB2b2lkIG9wZXJhdG9yKyhTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldKz1zLnBbaV07CiAgICB9CiAgICB2b2lkIG9wZXJhdG9yLShTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldLT1zLnBbaV07CiAgICB9CiAgICB2b2lkIG9wZXJhdG9yKihTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldKj1zLnBbaV07CiAgICB9CiAgICB2b2lkIHNob3coKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGNvdXQ8PHBbaV08PCIgfCAiOwogICAgfQp9OwppbnQgbWFpbigpCnsKICAgIFNldDxpbnQ+IHMxLHMyOwogICAgaW50IGFycltdPXswLDIsMyw0LDMsNn07CiAgICBpbnQgbj02OwogICAgZmxvYXQgYXJyMltdPXswLjUsMTIuMSwxLjcsMjMuMTV9OwogICAgY2hhciBhcnIzW109eydhJywnaCcsJ20nLCdrJywnYycsJ2UnfTsKICAgIHMxLnNldFZhbHVlcyhhcnIsbik7IC8vIDwtLS0tLS0tLS0tLS0tIGhlcmUgaXMgZXJyb3I7CiAgICBzMS5hZGQoNSk7CiAgICBzMS5yZW1vdmUoMyk7CiAgICBzMS5zaG93KCk7Cgp9