C++ 您将如何实现双向映射之类的功能?

C++ 您将如何实现双向映射之类的功能?,c++,std,C++,Std,我想要某种容器,它能在整数和字符串之间提供一个双向映射 我给它一个int,它给我与之相关的字符串 我给它字符串,它给我与它相关的int 您将如何实现这样一个功能?您需要两个映射,在添加/删除这些映射时,请确保它们同步。我不知道如何只使用一个容器来实现它。我将创建一个包含两个映射的类: class BiMap { void insert( string const & s, int i ) { stringToInt[ s ] = i; intTo

我想要某种容器,它能在整数和字符串之间提供一个双向映射

我给它一个int,它给我与之相关的字符串

我给它字符串,它给我与它相关的int


您将如何实现这样一个功能?

您需要两个映射,在添加/删除这些映射时,请确保它们同步。我不知道如何只使用一个容器来实现它。

我将创建一个包含两个映射的类:

class BiMap {

    void insert( string const & s, int i ) {
        stringToInt[ s ] = i;
        intToString[ i ] = s;
    }

    int find( string const & s ) const {
        // use stringToInt[ s ];     
    }

    string find( int const & i ) const {
        // use intToString[ i ];     
    }

    map< string, int >   stringToInt;
    map< int, string >   intToString;
};

取决于整数部分的范围,可能是矢量+映射。如果你能负担得起使用Boost,就有现成的。它通常被称为双映射或双射映射。谷歌搜索应该会给你一些现有的代码。你有性能要求吗?如果没有,则复制std::map并添加一些逻辑以强制执行唯一值并对值进行迭代,直到找到特定值,然后返回其键。