본문 바로가기

프로그래밍/STL3

STL map / multimap map 과 같은 키값에 다른 값들로 이루어진 multimap 에 대한 사용법 예제 map 안에 같은 키값으로 여러개 넣으면 insert 실패가 되어버리므로 그럴 때는 multimap 을 활용한다 소스 예제 void foo() { // 맵 std::map mapTemp; mapTemp.insert(std::map::value_type(2011, 11)); // 반복자 std::map::const_iterator it; for(it = mapTemp.begin(); it != mapTemp.end(); it++) if(it->first == 2011) int nVal = it->second;// nVal == 11 // 검색 std::map::iterator it = mapTemp.find(2011); if.. 2011. 11. 3.
STL vector, list, map 반복자 도중 삭제 사실 map 같은 건 좀 덜 하지만 (key 값으로 찾아 원하는것만 삭제 할 수 있으니...) vector 나 list 같은 경우엔 어떤 조건을 충족해야 삭제를 해야만 하는 경우가 있다. 그래서 보통 반복자를 통해서 삭제를 하는데 무작정 하다가는 프로그램이 뻗어버리는 경우가 일어난다 그래서 안전하게 삭제하는 흔하디 흔한 방법을 남겨둔다 Container::iterator it = Container.begin(); for( ; it != Container.end(); ) { if() { it = Container.erase(it); continue; } ++it; } 2011. 11. 2.
BYTE (unsigned char) Stream / asio send buffer 데이터를 주고 받을 때 암호화/복호화에 용의한 BYTE 형의 Stream 제어 클레스를 만들어 보았습니다 std::copy() 가 주석이고 stdext::unchecked_copy() 를 쓰는 것을 볼 수 있는데 copy() 로 쓰면 위험성이 있습니다 그래서 권장이 unchecked_copy() 인데 stdext:: 로 된 것을 잘 보세요! 아마도 vs2008 부터 지원할수도 있습니다 이전 버전에서는 그냥 copy 로 쓰시면 됩니다 사실은 보내는 부분 보다는 받는 부분이 더 걸작인데 ㅎㅎ class 예제 class CByteStream { BYTE* m_pData; int m_nSize; public: BYTE* GetData() { return m_pData; } int size() { return m.. 2011. 11. 1.