c++ - error C2679: binary '=': 没有找到接受 'std::basic_string 类型的右手操作数的运算符

标签 c++ c++11

我曾尝试使用 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/

相关文章:

c++ - Coverity 和 C++ : heap (with new) vs. 堆栈分配

c++ - 带有函数对象的 std::for_each

c++ - 在 C++ 中嵌入 python 时如何修复 "ImportError: No module named ' tensorflow'"

c++ - 为什么要在实例替换 vector 中删除?

C++ & ta_lib - 无法计算出如何使用 TA_MACD 函数

c++ - 在什么情况下我应该明确需要实现 move 构造函数和 move 赋值运算符?

c++ - 如何将低级常量应用于模板变量。我正在尝试编写一个 const_cast 实现

c++ - 如何在 C++ 中重新启动循环(在随机运行中查找唯一序列)

c++ - 如何检测我的 std::function 仍然可用?

c++ - 尝试将参数包的第一个元素作为函数调用并将包的其余部分作为参数传递给它