2012-05-17 3 views
1

:부스트 :: 간 ::지도 - 어떻게 유형으로 basic_string에 값을 업데이트하는 나는 다음과 같은 코드가

typedef managed_shared_memory::segment_manager segment_manager_t; 
    typedef allocator<void, segment_manager_t> void_allocator; 
    typedef allocator<char, segment_manager_t> char_allocator; 
    typedef basic_string<char, std::char_traits<char>, char_allocator> char_string; 
    typedef std::pair<const char_string, char_string> map_value_type; 
    typedef allocator<map_value_type, segment_manager_t> map_value_type_allocator; 
    typedef map< char_string, char_string, std::less<char_string>, map_value_type_allocator> complex_map_type; 

........ 

      managed_shared_memory segment(open_only,shm_name.c_str()); 

      //An allocator convertible to any allocator<T, segment_manager_t> type 
      void_allocator alloc_inst (segment.get_segment_manager()); 

       complex_map_type *myMap = segment.find_or_construct<complex_map_type>("myMap")(std::less<char_string>(), alloc_inst); 

       //Here I am trying to update value. Key exists in the map. 
       (*myMap)[char_string(key.c_str(), alloc_inst)] = char_string(val.c_str(), alloc_inst); 

사람이 나에게 마지막 줄에 대한 올바른 구문을 줄 수 있습니까? 마지막 줄에 컴파일 오류가 발생합니다.

미리 도움을 주셔서 감사합니다.

답변

1

나는 답을 얻었다.

char_string key(var.c_str(), alloc_inst); 
complex_map_type::iterator it = myMap->find(key); 

if(it != myMap->end()) 
(*it).second = char_string(new_value.c_str(), alloc_inst);