我曾尝试使用 C++ 代码和 unordered_map
编写电话簿,但我遇到了问题。这段代码的开头有一个我无法理解的错误。当我尝试运行它时,我得到了这个错误:
Error 1 error C2679: binary '='
谁能帮帮我
#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;
}
最佳答案
您声明了 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();
关于c++ - error C2679: binary '=': 没有找到接受 'std::basic_string 类型的右手操作数的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472612/