Visual c++ 在boost::bimap中向多集添加值

Visual c++ 在boost::bimap中向多集添加值,visual-c++,boost,bimap,boost-bimap,Visual C++,Boost,Bimap,Boost Bimap,我想使用boost::bimap的多映射版本,我正在关注这一点 这显示了如何在结构中添加和检索值。我试图根据右侧映射到左侧多个值的值进行查找,如果找到,我想添加到左侧的列表中。例如,假设这是bimap value_type(1, 1) value_type(10, 50) value_type(1, 2) value_type(9, 15) 当你做一个双映射时,左,相等的范围(1) 你得到 1=>1 1=>2 我想更新它,使它也映射到3,即,将3添加到列表中,以便下次当bimap.left

我想使用boost::bimap的多映射版本,我正在关注这一点

这显示了如何在结构中添加和检索值。我试图根据右侧映射到左侧多个值的值进行查找,如果找到,我想添加到左侧的列表中。例如,假设这是bimap

value_type(1, 1)
value_type(10, 50) 
value_type(1, 2)
value_type(9, 15)
当你做一个双映射时,左,相等的范围(1)

你得到

1=>1
1=>2

我想更新它,使它也映射到3,即,将3添加到列表中,以便下次当
bimap.left.equal_range(1)时已完成,这将是结果

1=>1
1=>2
1=>3

如何获取右侧的列表,以便像上面提到的那样修改列表(而不仅仅是一个常量迭代器,以查看值)

TIA只是。。。加上:

#include <iostream>
#include <boost/bimap.hpp>
#include <boost/bimap/multiset_of.hpp>
#include <boost/bimap/set_of.hpp>
#include <boost/range/iterator_range.hpp>

namespace bimaps = boost::bimaps;

int main() {
    typedef boost::bimap<bimaps::multiset_of<int>, bimaps::set_of<int>> bimap_t;

    bimap_t m;

    m.insert({1, 1});
    m.insert({10, 50});
    m.insert({1, 2});
    m.insert({9, 15});

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";

    std::cout << "\nafter adding:\n";

    m.insert({1, 3});

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";

    std::cout << "\nafter removing:\n";

    m.right.erase(m.right.find(3));

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";
}
只是。。。加上:

#include <iostream>
#include <boost/bimap.hpp>
#include <boost/bimap/multiset_of.hpp>
#include <boost/bimap/set_of.hpp>
#include <boost/range/iterator_range.hpp>

namespace bimaps = boost::bimaps;

int main() {
    typedef boost::bimap<bimaps::multiset_of<int>, bimaps::set_of<int>> bimap_t;

    bimap_t m;

    m.insert({1, 1});
    m.insert({10, 50});
    m.insert({1, 2});
    m.insert({9, 15});

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";

    std::cout << "\nafter adding:\n";

    m.insert({1, 3});

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";

    std::cout << "\nafter removing:\n";

    m.right.erase(m.right.find(3));

    for (auto p : boost::make_iterator_range(m.left.equal_range(1)))
        std::cout << p.second << " ";
}

谢谢,我的错,我没有意识到。但要移除一对,我需要一个关系,并通过它移除它?不一定。您可以通过bimap的任一视图删除:谢谢,我的错,我没有意识到。但要移除一对,我需要一个关系,并通过它移除它?不一定。您可以通过bimap的任一视图删除: