首页 > 解决方案 > 如何使用字符串类型的键输出映射,值是字符串的集合

问题描述

我正在编写一个名为 put() 的方法,该方法假设输出具有正确值的地图。我的打印方法有效,但我的实际方法无法正确制作地图。键是字符串,地图的值是一组字符串。我的方法也是 T 类型,可以处理其他值,但它是为字符串制作的。

我正在尝试为每个循环使用一个嵌套来获取输入集并将其用于地图中的键。每个循环的下一个循环是遍历集合,如果键不等于值,则在相应的键处插入值。这就是我的问题发生的地方,但我不知道如何解决它。

输入:set = {“a”、“b”、“c”、“d”}

输出:预期--vs-- 实际

键:a 值:bcd --- 键:a 值:bcd

键:b 值:acd --- 键:b 值:abcd

键:c 值:abd --- 键:c 值:abcd

等等...

void
  put (const Container& c)
  {
    std::map<T, std::set<T>> map;
    std::set<T> set;
    for(auto i : c)
    {
      for(auto j : c)
      {
        if(i != j)   //this is where I think I am wrong
        {
         set.insert(j);
         map[i] = set;
        }      
      }
    }
     //my printing method is here but I left it out for simpler code
  }

int
  main ()
  {
    set<string> v = {"a", "b", "c", "d"};
    manager.put(v);
  }

标签: stringc++11foreachstdmapstdset

解决方案


推荐阅读