在地图中使用字符串向量

时间:2014-03-10 08:53:17

标签: c++ string vector map

我有一个带字符串键的映射,第二个属性应该是vector。

声明:

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<std::basic_string<char>, std::vector<std::basic_string<char> > >::mapped_type {aka std::vector<std::basic_string<char> >}’ and ‘std::vector<std::basic_string<char> >*’)。我试图给矢量指针映射,但它没有帮助。

1 个答案:

答案 0 :(得分:4)

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;
    }
}