Ошибка: нет соответствия для вызова "set_union" - PullRequest
0 голосов
/ 13 июня 2019

Сегодня я работаю над проблемой алгоритма ([Uva 12096]), и я написал код с моей путеводителем.Это похоже на код в книге, но при его компиляции произошла ошибка: [Ошибка] нет соответствующей функции для вызова 'set_union (, std :: set :: iterator,, std :: set :: iterator, std:: insert_iterator>) '.

Я использовал diff, чтобы выяснить, есть ли что-то другое в коде, который показывает мой путеводитель, но я не смог найти никакой разницы.Где я неправ?Как я мог это исправить? Ува 12096

#include<iostream>
#include<string>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<algorithm>

using namespace std;

#define ALL(x) x.begin, x.end()
#define INS(x) inserter(x,x.begin())

typedef set<int> Set;
map<Set, int> IDcache; 
vector<Set> Setcache;

int ID(Set x){
    if(IDcache.count(x))    return IDcache[x];
    Setcache.push_back(x); 
    return IDcache[x] = Setcache.size() - 1;
} 

int main(){
    int T;
    cin >> T;
    while(T--){
        stack<int> s;
        int n;
        cin >> n; 
        for(int i = 0; i < n; i++){
            string op;
            cin >> op;
            if(op[0] == 'P')    s.push(ID(Set()));
            else if(op[0] == 'D')   s.push(s.top());
            else{
                Set x1 = Setcache[s.top()]; s.pop();
                Set x2 = Setcache[s.top()]; s.pop();
                Set x;
                if(op[0] == 'U') set_union  (ALL(x1), ALL(x2), INS(x));//Error occured here.
                if(op[0] == 'I') set_intersection   (ALL(x1), ALL(x2), INS(x));//Error also occured here.
                if(op[0] == 'A') {
                    x = x2;
                    x.insert(ID(x1));
                }
                s.push(ID(x));
            }
        cout << Setcache[s.top()].size() << endl;
        }
    cout<<"***"<<endl;  
}
    return 0;
}

1 Ответ

0 голосов
/ 13 июня 2019

Ваш макрос ALL содержит ошибки, вам не хватает пары символов.

#define ALL(x) x.begin, x.end() должно быть #define ALL(x) x.begin(), x.end().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...