728x90
boost 에서 지원하는 set, multiset, map, multimap 입니다
hash 로 동작하고 일반적인 stl 보다 빠르니 사용해보는게 좋겠죠
boost::unorder_xxx 형태로 정의되어있으니 찾아봅시다.
예제
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <sstream> #include <stdlib.h> #include <vector> #include <map> #include <fstream> #include <boost/unordered_set.hpp> #include <boost/unordered_map.hpp> class CTest { typedef boost::unordered_set<int> IDSet; typedef boost::unordered_map<std::string, IDSet> SetMap; SetMap m_DataMap; public: void Run() { IDSet temp; temp.insert(1); // 데이터 값 아무거나 넣기 m_DataMap["TEST"] = temp; // map 에 데이터 추가 m_DataMap["TEST1"] = temp; m_DataMap["TEST2"] = temp; if(m_DataMap.find("TEST") != m_DataMap.end()) { IDSet tmp; tmp = m_DataMap.at("TEST"); // 키값으로 데이터값 얻기 for(IDSet::iterator it = tmp.begin(); it != tmp.end(); it++) std::cout << "Test " << (*it) << std::endl; std::cout << "-----" << std::endl; tmp.insert(2); tmp.insert(2); // 중복키 한번 더 넣어보기 for(IDSet::iterator it = tmp.begin(); it != tmp.end(); it++) std::cout << "Test " << (*it) << std::endl; std::cout << "-----" << std::endl; tmp.erase(1); // 키 지우기 for(IDSet::iterator it = tmp.begin(); it != tmp.end(); it++) std::cout << "Test " << (*it) << std::endl; std::cout << "-----" << std::endl; } if(m_DataMap.find("TEST1") != m_DataMap.end()) { m_DataMap.erase("TEST1"); if(m_DataMap.find("TEST1") == m_DataMap.end()) std::cout << "Delete OK" << std::endl; } std::cout << "END " << std::endl; } CTest(void); virtual ~CTest(void); };
결과
Test 1
-----
Test 1
Test 2
-----
Test 2
-----
Delete OK
728x90
'프로그래밍 > boost' 카테고리의 다른 글
boost::asio 로 만들어 보고 싶은 서버 구조 (0) | 2012.03.28 |
---|---|
boost::mutex (0) | 2012.03.26 |
boost::bind 의 기본 사용법 예제 (0) | 2011.11.16 |
boost::mem_fn 예제에 std::tr1::tuple 예제의 조합 (0) | 2011.11.15 |
boost::asio 비동기 서버/클라 step 1 (0) | 2011.11.09 |
댓글