如何使用std :: set的每个值作为映射的键

时间:2017-03-26 18:43:53

标签: c++ string c++11 stdmap

假设我们的地图包含dependencies { compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" compile "com.facebook.react:react-native:+" } 且设置为int

strings

现在,是否可以将上述集合的每个唯一值作为映射键
粗略地说,数据就像

std::map < int , std::set<std::string> >  myString;

1=> "set1"
1=> "set2"
2=> "set1"
2=> "set2"

简单来说,我试图设计一个映射,它有一个指向字符串集的整数键,每个字符串又有多个值,因此我想到一组字符串作为普通字符串到整数会覆盖这些值我们只有单一的最终价值。

我不认为以下语法可以解决问题:

1=>
  set1=> "Hello"
  set1=> "Hey"
  set1=> "Wow"
1=>  
  set2=> "Hello"
  set2=> "Hey"
  set2=> "Wow"
2=>

  set1=> "Hello"
  set1=> "Hey"
  set1=> "Wow"
2=>  
  set2=> "Hello"
  set2=> "Hey"
  set2=> "Wow"

你的建议会非常有用,因为我试图将更大的问题简化为更短的问题并将加入所有这些子问题。

很抱歉,如果我的解释很糟糕且令人困惑。 这是我试过的代码

std::map < std::set<std::string>, std::string >  myString;

感谢。 特加斯

1 个答案:

答案 0 :(得分:0)

  

map,其中一个整数键指向一组字符串,每个字符串又有多个值

如果我只是按照字面意思并假设“多个值”指的是一些自定义类型,那么我可能想出这样的东西:

#include <map>
#include <set>
#include <vector>
#include <string>

struct Foo{
        int _id;
        Foo(int id):_id(id){}
        bool operator<(const Foo& other) const { return _id < other._id;}
};

typedef std::vector<Foo>                      multiple_values;
typedef std::string                           each_string;
typedef std::map<each_string,multiple_values> again_has;
typedef std::set<again_has>                   set_of_strings_and;
typedef std::map<int,set_of_strings_and>      map_which_has;

int main(){
    multiple_values    mv   = {Foo(1),Foo(2)};
    again_has          ah   = {{"test",mv}};
    set_of_strings_and sosa = {ah};
    map_which_has      mwh  = {{0,sosa}};
};