프로그래밍/Let's Share it
CAtlArray의 Linux(gcc) 버전
초록생선
2016. 2. 1. 16:55
[프로그래밍/Let's Share it] - Linux/gcc에서 CStringA MFC Class 사용하기
과 유사합니다. Linux/Gcc에서 CAtlArray를 사용하기 위한 class를 공유합니다.
#include "stdafx.h"
#include <stdio.h>
#include <vector>
template<typename E>
class CAtlArrayMy
{
public:
CAtlArrayMy() { }
~CAtlArrayMy() { }
size_t Add(E element)
{
try
{
m_vector.push_back(element);
}
catch(...)
{
}
return m_vector.size();
}
size_t GetCount()
{
return m_vector.size();
}
void RemoveAll()
{
m_vector.clear();
}
E& GetAt(size_t iElement)
{
return m_vector[iElement];
}
void SetAt(size_t iElement, E element)
{
m_vector[iElement] = element;
}
bool IsEmpty()
{
return m_vector.empty();
}
E& operator[] (size_t iElement)
{
return m_vector[iElement];
}
void InsertAt(size_t iElement, E element, size_t nCount=1)
{
try
{
if (m_vector.size() < iElement)
{
m_vector.resize(iElement);
}
m_vector.insert(m_vector.begin()+iElement, nCount, element);
}
catch(...)
{
}
}
public:
std::vector<E> m_vector;
};
int main(void)
{
printf("---\r\n");
CAtlArrayMy<int> arr;
int* ptr = NULL;
size_t i = 0;
arr.Add(3);
arr.Add(4);
arr.Add(5);
arr.Add(6);
arr.InsertAt(10, 9, 4);
printf("... %d\r\n", (int)arr.GetCount());
ptr = &arr[0];
for (i=0; i<arr.GetCount(); i++)
{
printf("[%d] %d, %d\r\n", (int)i, arr[i], ptr[i]);
}
printf("...%d\r\n", arr.IsEmpty());
arr.RemoveAll();
printf("...%d\r\n", arr.IsEmpty());
return 0;
} |
위 code는 Windows / Linux 모두 compile이 되며, Windows의 CAtlArray와 동일한 결과를 생성합니다.