我曾尝试使用带有unordered_map
的C ++代码编写电话簿,但我遇到了问题。在此代码的开头有一个我无法理解的错误。当我试图运行它时,我收到此错误:
错误1错误C2679:二进制' ='
任何人都可以帮助我。
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include <hash_map>
#include <algorithm>
using namespace std;
int main()
{
unordered_map<string, pair< string,vector<string>>>contact;
string name, number, address;
cin >> name >> number>>address;
contact[name]=make_pair(number, address);
unordered_map<string, pair< string, vector<string>>> ::iterator it;
it = contact.begin();
while (it != contact.end())
{
cout << it->first;
it++;
}
return 0;
}
答案 0 :(得分:2)
您将contact
声明为unordered_map<string, pair< string,vector<string>>>
这里contact[name]=make_pair(number, address);
您要插入
contact[string] = make_pair(string, string)
。必须是
contact[string] = make_pair(string, vector<string>)
更改容器的定义,如
unordered_map<string, pair< string, string>>contact;
或者如果您确实需要address
成为vector
,那么
contact[name] = make_pair(number, std::vector<string>{address});
如果您使用c++11
或更高版本,则可以使用auto
,
auto it = contact.begin();
而不是
unordered_map<string, pair< string, vector<string>>> ::iterator it;
it = contact.begin();