' make_pair'不能用作功能

时间:2017-03-21 19:14:02

标签: c++ c++14 std-pair

这是我的完整代码:

  #include <iostream>
#include <vector>
#include <bits/stdc++.h> 

using namespace std;
#define ff first
#define mp make_pair

#define ss second


int main(void) {

    int m;
    vector <string> grid;

    cin >> m;

    pair <int,int> foo;
 pair <int,int> bar;


// bar =make_pair (10.5,'A');
foo = make_pair (1,2);
cout<<foo.ss<<endl;
    for(int i=0; i<m; i++) {
        string s; cin >> s;
        grid.push_back(s);
        int pp = s.find('p');
        int mp = s.find('m');
        if(pp>=0){
          bar = make_pair(pp,i);
        }
      cout<<pp<<endl;
    }
    return 0;
}

这是我的错误:

prog.cpp: In function 'int main()':
prog.cpp:40:32: error: 'make_pair' cannot be used as a function
            bar = make_pair(pp,i);
                                ^
当我将它放在for循环中时,

make_pair会出现此错误,如果我将其放置,它会完全正常。我哪里错了?

编辑:我正在使用codechef ide ...这些是输入

3
---
-m-
p--

1 个答案:

答案 0 :(得分:8)

#define mp make_pair
...
    int mp = s.find('m');
...
      bar = make_pair(pp,i);

您将make_pair声明为变量,隐藏了该函数。

要解决此问题,请摆脱可怕的宏定义。