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 |
댓글