2016. 2. 1. 16:55
CAtlArray의 Linux(gcc) 버전
2016. 2. 1. 16:55 in 프로그래밍/Let's Share it
[프로그래밍/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와 동일한 결과를 생성합니다.
'프로그래밍 > Let's Share it' 카테고리의 다른 글
[알고리즘] 길 찾기 algorithm (bfs, dynamic programming, DP, 다이나믹 프로그래밍 (0) | 2018.05.27 |
---|---|
python input시 timeout 지원하기 (python input timeout) (1) | 2017.07.18 |
zlib 1.2.8 C++ 방식으로 편리하게 사용하기 (0) | 2016.01.13 |
Linux/gcc에서 CStringA MFC Class 사용하기 (0) | 2015.11.24 |
Registry 변경 감시를 위한 간단 코드 공유 (1) | 2014.11.07 |