C++ 您将如何实现双向映射之类的功能?
我想要某种容器,它能在整数和字符串之间提供一个双向映射 我给它一个int,它给我与之相关的字符串 我给它字符串,它给我与它相关的intC++ 您将如何实现双向映射之类的功能?,c++,std,C++,Std,我想要某种容器,它能在整数和字符串之间提供一个双向映射 我给它一个int,它给我与之相关的字符串 我给它字符串,它给我与它相关的int 您将如何实现这样一个功能?您需要两个映射,在添加/删除这些映射时,请确保它们同步。我不知道如何只使用一个容器来实现它。我将创建一个包含两个映射的类: class BiMap { void insert( string const & s, int i ) { stringToInt[ s ] = i; intTo
您将如何实现这样一个功能?您需要两个映射,在添加/删除这些映射时,请确保它们同步。我不知道如何只使用一个容器来实现它。我将创建一个包含两个映射的类:
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并添加一些逻辑以强制执行唯一值并对值进行迭代,直到找到特定值,然后返回其键。