我有一个带字符串键的映射,第二个属性应该是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> >*’)
。我试图给矢量指针映射,但它没有帮助。
答案 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;
}
}