【问题标题】:Using string vector in map在地图中使用字符串向量
【发布时间】:2014-03-10 08:53:17
【问题描述】:

我有一个带字符串键的地图,第二个属性应该是向量。

声明:

map <string, vector<string> > Subjects;

然后当我想用它来添加值时。

Subjects[s] = new vector<string>;
Subjects[s].push_back(n);

s 和 n 是字符串。我只在第一行出错。它说error: no match for ‘operator=’ (operand types are ‘std::map&lt;std::basic_string&lt;char&gt;, std::vector&lt;std::basic_string&lt;char&gt; &gt; &gt;::mapped_type {aka std::vector&lt;std::basic_string&lt;char&gt; &gt;}’ and ‘std::vector&lt;std::basic_string&lt;char&gt; &gt;*’)。我试图将矢量指针指向地图,但没有帮助。

【问题讨论】:

  • 您的值类型不是指针,因此new vector&lt;string&gt; 是多余的,操作Subjects[s] 将已经正确构造向量 - 如果它不存在于键s

标签: c++ string vector map


【解决方案1】:

Subjects 类型的值不是指针,不能给它分配new

如果n是字符串类型,直接调用:

map <string, vector<string> > Subjects;

std::string n("hello");

Subjects[s].push_back(n);

编辑:

要从 map 中打印这个值,你需要在 map 中找到元素然后迭代向量。

auto it = Subjects.find(s);

if (it != Subjects.end())
{
    auto& vIt = it->second;

    for (auto elem : vIt)
    {
        cout << elem << endl;
    }
}

【讨论】:

  • 谢谢,如果我想从地图上打印这个值?我该怎么办?
  • 您需要遍历地图,然后通过向量进行迭代。
猜你喜欢
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2015-09-22
相关资源
最近更新 更多