C ++在地图中搜索元组错误:无法将'int'左值绑定到'int&&'

时间:2017-12-19 11:59:26

标签: c++ stl

我总是遇到这个错误。

#include <bits/stdc++.h>
using namespace std;
#define mt make_tuple<int,int>

int main(){
    map<tuple<int,int>,int> l;
    l[mt(5,4)] = 3;
    cout << l.count(mt(9,8));
}

1。我应该更改什么来接受我的文件中的值?
2.错误在哪里?

int main(){
    map<tuple<int,int>,int> l;
    l[mt(5,4)] = 3;
    int a,b;
    cin >> a >> b;
    cout << l.count(mt(a,b));
}

1 个答案:

答案 0 :(得分:3)

make_tuple的重点是让它为你推断出元组的类型。如果您明确指定<int, int>调用它,则可以防止正确发生扣除。

make_tuple完成工作并且不要仅仅因为你想保存一些按键来定义宏 - 你会后悔。

int main(){
    std::map<std::tuple<int, int>, int> l;
    l[std::make_tuple(5,4)] = 3;
    int a,b;
    cin >> a >> b;
    cout << l.count(std::make_tuple(a,b));
}

live example on wandbox.org