#include <vector>
int main()
{
std::vector<int> Testvector;
TestVector.push_back(10);
TestVector.push_back(20);
TestVector.push_back(5);
}
push_back() 이란 함수는 앞에서 본 수도코드로 Add 함수의 기능이며
자료를 추가하는 함수이다.위의 코드로 [10][20][5] 이런 방식으로
자료가 추가되며 시퀸스 컨테이너 인것을 알 수 있다.
#include <vector>
typedef int Data;
class MyVector
{
private:
int m_Capacity;
int m_Size;
Data* m_pData
public:
MyVector() : m_Size(0),m_Capacity(0),m_pData(nullptr)
{
}
public:
void push_back(const Data& _Data)
{
}
};
vector를 만든다고 생각하고 똑같은 위와같은 똑같은 push_back 기능을 만든다고 하면
push_back을 하면 가장 첫번째로 공간을 만들어 줘야 한다.자료가 들어갈 공간이 꽉 차서
없다면 늘려줘야 한다.(m_Size == m_Capacity)이때 사용되는게 m_Capacity가 사용된다.
m_Capacity는 데이터를 담을수 있는 공간의 개수이며 m_Size는 데이터의 개수이다.
vector는 capacity 즉 데이터를 담을수 있는 공간이 부족하면 기존의 데이터를 복사하고 지운후
공간을 늘린다음에 기존의 데이터를 다시 넣어주고 새로 넣을 데이터를 넣는 방식이다.
딱 봐도 많은 비효율적인 작업을 해야하고 속도도 느리다.
vector의 사용시 주의할 점이다. 만약 공간의 크기를 알고있다면 capacity의 값을 필요한만큼
넣어주고 사용한다면 위의 번거로운 작업을 거칠필요가 없다.
미리 vector의 크기를 확장해 놓는것이다.이러한 함수가 reserve() 존재한다.
reserve(20) 이렇게 사용하면 capacity의 값이 20으로 처음부터 확장되어있다.