///header
#pragma once
template<typename T >
class MyVector
{
public:
int m_numElements;
int m_currentSize;
T *m_pData;
MyVector(int nMaxElements)
{
m_numElements = nMaxElements;
m_pData = new T[nMaxElements];
m_currentSize = -1;
}
int GetLength()
{
return m_currentSize + 1; // Add 1 as it is zero based index
}
// Adds the element at the end
bool AddElement(T data)
{
m_currentSize++;
if(m_currentSize - 1 >= m_numElements)
return false; // Maximum threshold reached
m_pData[m_currentSize] = data;
return true;
}
// 0 based index
bool ModifyElement(int pos, T data)
{
if(pos <= m_currentSize)
{
m_pData[pos] = data;
return true;
}
return false;
}
bool DeleteElement()
{
if(m_currentSize < 0)
return false; // 벡터에 데이터가 없으면 false
m_currentSize--;
return true;
}
T operator [] (int index)
{
if(index > m_currentSize)
throw -1;
return m_pData[index];
}
void DisplayVector()
{
for(int i = 0; i < GetLength(); i++)
{
std::cout << m_pData[i];
if( i == GetLength() - 1)
std::cout << "\n";
else
std::cout << ", ";
}
}
void MultiplyValues(T value)
{
for(int i = 0; i < GetLength(); i++)
{
m_pData[i] *= value;
}
}
};
==================
// 벡터구현.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include "MyVector.h"
int _tmain(int argc, _TCHAR* argv[])
{
MyVector<double> vec(10);
//벡터에 double 형 데이터 4개 추가
vec.AddElement(12.5);
vec.AddElement(12.6);
vec.AddElement(12.7);
vec.AddElement(12.8);
//추가된 데이터 출력
cout << "벡터에 4개의 데이터 추가"<<endl;
vec.DisplayVector();
//컨테이너에 저장된 각각의 값들을 10으로 곱
cout << "벡터의 각 값들을 10배"<<endl;
vec.MultiplyValues(10);
vec.DisplayVector();
cout << "벡터의 값 두개를 삭제"<<endl;
vec.DeleteElement();
vec.DeleteElement();
vec.DisplayVector();
cout << "벡터에 3개의 데이터 추가"<<endl;
vec.AddElement(22.7);
vec.AddElement(22.8);
vec.AddElement(22.9);
//벡터길이 만큼 출력
for(int i = 0; i < vec.GetLength(); i++)
std::cout << vec[i] << " ";
cout << " ";
return 0;
}