我正在开发一个程序,该程序收集姓氏,然后询问家庭成员的名字。我正在使用一个istringstream
对象来分隔从getline
. 对于我尝试在 中填充元素的步骤map
,我收到以下错误。我知道您可以通过在名称后面的括号中提供密钥来创建密钥map
。如果该方法有效,为什么会出现以下错误。
ex11_14.cpp:19:6: error: reference to non-static member function must be called
family[lname].push_back[fname];
代码:
#include <iostream>
#include <map>
#include <vector>
#include <sstream>
int main()
{
std::string lname, fname;
std::string last, children;
std::map<std::string, std::vector<std::string>> family;
std::cout << "Enter family names" << std::endl;
getline(std::cin, last);
std::istringstream i{last};
std::cout << "Enter children's names" << std::endl;
while(i >> lname) {
std::cout << lname << std::endl;
getline(std::cin, children);
std::istringstream j{children};
while(j >> fname)
family[lname].push_back[fname];
}
for(auto &c:family) {
std::cout << c.first << std::endl;
for(auto &w:c.second)
std::cout << w << " ";
std::cout << std::endl;
}
std::cout << std::endl;
return 0;
}