Å¥¸¦ È®ÀåÇØ º¸ÀÚ. ¾î¶² °æ¿ì¿¡ »ç¿ëÇÑÁö ¾Ë¾Æ º¸ÀÚ. ´ÙÀ½°ú °°Àº ±¸Á¶Ã¼°¡ ÀÖ°í stl Å¥¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. push , popÀ» ¿©·¯±ºµ¥ »ç¿ëÇÏ°í ÀÖ´Ù. ¿©±â¼ ÇÁ·Î±×·¥ À¯¿¬¼ºÀ» È®º¸Çϱâ À§ÇØ ¹è¿ ´ë½Å new, delete·Î ¸Þ¸ð¸® ÇÒ´ç ¹æ½ÄÀ¸·Î ¹Ù²Ù¾î º¸ÀÚ. struct MemData
{ char data[100]; }; ¸Þ¸ð¸® ÇÒ´ç ¹æ½ÄÀ¸·Î ¹Ù²Ù°í º¹»ç »ý¼ºÀÚ¸¦ ¸¸µç´Ù. #define BUFF_SIZE 4
struct MemData { char* data; MemData& operator =(const MemData& v) { memcpy(this->data, v.data, BUFF_SIZE); return (*this); } }; º¹»ç »ý¼ºÀÚ¸¦ ¸¸µå´Â ÀÌÀ¯´Â ±âÁ¸ Äڵ忡¼ ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ°í Àֱ⠶§¹®ÀÌ´Ù. MemData a; MemData b; a = b; ±¸Á¶Ã¼¿¡¼ ¹è¿À» »ç¿ëÇÏ°í ÀÖÀ¸¸é ¾Ë¾Æ¼ º¹»ç ÇØÁØ´Ù. ¸Þ¸ð¸® ¹æ½ÄÀ¸·Î ¹Ù²Ù¸é Æ÷ÀÎÅ͸¸ Àü´Þ µÇ±â ¶§¹®¿¡ º¹»ç »ý¼ºÀÚ¸¦ ¸¸µé¾î ¹öÆÛ¸¦ º¹»çÇÑ´Ù. stl queueÀÇ push, popÀ϶§´Â ¸Þ¸ð¸®°¡ º¹»ç ¾ÈµÈ´Ù. push¸¦ ¿©·¯¹ø ÇÏ¸é ¸Þ¸ð¸® Æ÷ÀÎÅ͸¸ Àü´ÞµÈ´Ù. push, pop ÇÒ¶§ ¸Þ¸ð¸® »ý¼º, Á¦°Å, º¹»ç¸¦ ±¸ÇöÇØÁà¾ß ÇÑ´Ù. óÀ½¿¡´Â ÇÔ¼ö¸¦ ¸¸µé¾î ÇØ°áÇÒ·Á°í Çß´Ù. ±âÁ¸¿¡ push, popÀÌ ³Ê¹« ¸¹°í QA ÇÒ¾çÀÌ ¸¹°í ½±Áöµµ ¾Ê±â ¶§¹®¿¡ ÃÖ¼ÒÇÑÀ¸·Î °íÄ¥¼ö ÀÖ´Â ¹æ¹ýÀ» ã¾Æ º¸¾Ò´Ù. MemData Àü¿ë Å¥¸¦ ¸¸µé¾ú´Ù. push ÇÒ¶§ ¸Þ¸ð¸®¸¦ »ý¼ºÇÏ°í "d = element"´Â º¹»ç »ý¼ºÀÚ¿¡ ÀÇÇØ ¸Þ¸ð¸®¸¦ º¹»çÇÑ´Ù. pop ÇÒ¶§ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. struct QueueExt : std::queue<MemData>
{ void push(const MemData& element) { MemData d; d.data = new char[BUFF_SIZE]; d = element; std::queue<MemData>::push(d); } void pop() { MemData d = std::queue<MemData>::front(); if(d.data) delete [] d.data; std::queue<MemData>::pop(); } }; QueueExt gQueue; Å¥ ¼±¾ð¸¸ ¼öÁ¤ÇÏ¸é ³¡ÀÌ´Ù. Àüü ¿¹Á¦ ÄÚµå´Â ´ÙÀ½°ú °°´Ù. #include <stdio.h>
#include <queue> #define BUFF_SIZE 4 struct MemData { char* data; MemData& operator =(const MemData& v) { memcpy(this->data, v.data, BUFF_SIZE); return (*this); } }; struct QueueExt : std::queue<MemData> { void push(const MemData& element) { MemData d; d.data = new char[BUFF_SIZE]; d = element; std::queue<MemData>::push(d); } void pop() { MemData d = std::queue<MemData>::front(); if(d.data) delete [] d.data; std::queue<MemData>::pop(); } }; QueueExt gQueue; int main(int argc, char* argv[]) { MemData a; MemData b; a.data = new char[4]; b.data = new char[4]; b.data[0] = 77; b.data[1] = 88; b.data[2] = 99; b.data[3] = 33; memset(a.data, 3, 4); gQueue.push(b); a = gQueue.front(); gQueue.pop(); delete a.data; delete b.data; return 0; } Âü°í) https://stackoverflow.com/questions/6806000/call-function-when-items-are-added-or-removed-from-a-vector |