更改multimap内的值

时间:2010-06-23 19:38:37

标签: c++ stl

我有一个

multimap<key1,pair<key2, value2>>

我想在此multimap中更改value2。

typedef std::pair<int, int> comp_buf_pair; //pair<comp_t, dij>
typedef std::pair<int, comp_buf_pair> node_buf_pair;
typedef std::multimap<int, comp_buf_pair> buf_map; //key=PE, value = pair<comp_t, dij>
typedef buf_map::iterator It_buf;


buf_map bufsz_map;

bufsz_map.insert(node_buf_pair(target(*ei,g), comp_buf_pair(comp_t[target(*ei,g)], dij)));


for(It_buf it = bufsz_map.equal_range(*u_iter).first; it!= bufsz_map.equal_range(*u_iter).second;)
{
    comp_buf_pair it1 = it->second;
    if(it1.first < c_i)
    {
        std::cout << it1.first << " : " << it1.second << std::endl;
        old_c_i = it1.first;
        old_dij = it1.second;
        updated_dij = (c_i-old_c_i) + old_dij;

        // I would like to erase the it1.second value and add the updated_dij value in the bufsz_map
    }
}

什么是更好的方法呢?

1 个答案:

答案 0 :(得分:4)

语句it->second.second = updated_dij;将覆盖旧值。由于您不更改密钥字段或指示新密钥的内容,因此这似乎已足够。

这是您要查找的内容,还是要在新密钥下插入updated_dij并删除旧密钥?