错误C2679:二进制' =' :找不到哪个运算符采用了类型' std :: basic_string的右手操作数

时间:2015-12-26 15:18:34

标签: c++ c++11

我曾尝试使用带有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;
}

1 个答案:

答案 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();