#include <vector>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class VectorRF
{
int* data;
int col;
int cap;
void resize()
{
cap++;
int* new_data = new int(cap);
for (int i = 0;i < col;i++)
new_data[i] = data[i];
delete data;
data = new_data;
}
void resize2()
{
cap+=2;
int* new_data = new int(cap+1);
for (int i = 0;i < col;i++)
new_data[i+1] = data[i];
delete[] data;
data = new_data;
}
public:
VectorRF()
{
col = 0;
cap = 1;
data = new int(cap);
}
int size()
{
return col;
}
int clear()
{
delete[]data;
VectorRF();
}
void v_zad(int val)
{
resize();
data[col++] = val;
}
void v_nach(int val)
{
resize2();
data[0] = val;
col++;
}
int& at(int index)
{
if (index < 0 || index >= col)
throw"Index out of range";
return data[index];
}
int& operator[](int index)//запись и чтение
{
return data[index];
}
const int& operator[](int index) const// чтение
{
return data[index];
}
};
//class Student
//{
// string name;
// int age;
// string group;
//public:
// Student(string n, int a, string g) : name(n), age(a), group(g) {}
//
// string operator[](const string ind)
// {
// if (ind == "name")
// return name;
// if (ind == "age")
// return to_string(age);
// if (ind == "group")
// return group;
// }
//---- через кейсы
//string operator[](int index)
//{
// switch (index)
// {
// case 0:return name;
// case 1:return to_string(age);
// case 2:return group;
// }
//}
//};
int main()
{
setlocale(LC_ALL, "RU");
VectorRF vec;
vec.v_zad(5);
vec.v_nach(2);
vec.at(0);
cout << vec.at(0);
//Student s("Tom", 20, "RPO");
//string sr;
//cin >> sr;
//cout << s[sr];
}