작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
2.3K
0
계속 제목과 같은 오류가 뜹니다 ㅠㅠ 살려주세요..
#include <iostream>
#include <vector>
using namespace std;
// vector를 만들어보자
template<typename T>
class Vector
{
public:
Vector() : _data(nullptr), _size(0), _capacity(0)
{
}
~Vector()
{
if (_data)
delete[] _data;
}
// [ ]
void push_back(const T& val)
{
if (_size == _capacity)
{
//증설 작업
int newCapacity = static_cast<int>(_capacity * 1.5); //실수에서 int로 변환하면 데이터가 잘릴수도있다
if (newCapacity == _capacity)
newCapacity++;
reserve(newCapacity);
}
// [1][2][3][]
_data[_size] = val;
//데이터 개수 증가
_size++;
}
void reserve(int capacity)
{
_capacity = capacity;
T* newData = new T[_capacity];
//데이터 복사
for (int i = 0; i < _size; i++)
{
newData[i] = _data[i];
//기존에 있던 데이터를 날린다
if (_data)
delete[] _data;
// 교체
_data = newData;
}
}
T& operator[](const int pos) { //레퍼런스로 만들어야 데이터를 넣을 수 있음
return _data[pos];
}
int size() { return _size; }
int capacity() { return _capacity; }
private:
T* _data;
int _size;
int _capacity;
};
int main()
{
Vector<int> v;
//v.reserve(100);
for (int i = 0; i < 100; i++)
{
v.push_back(i);
cout << v.size() << " " << v.capacity() << endl;
}
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << endl;
}
cout << "-----------------" << endl;
//
// for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
// {
// cout << (*it) << endl;
// }
//
return 0;
}
헉; 감사합니다 ㅠㅠ