擦除向量矢量矩阵中的元素?

时间:2017-12-22 14:22:18

标签: c++ vector iterator

#include <stdio.h>
#include <vector>
using namespace std;

int max(int a, int b)
{
    if (a > b)
        return a;
    else
        return b;
}

typedef struct
{
    int ini, fin;
}TNodo;

TNodo nodo[1000000];

int n, q, a, b, rc, rp, res, cont, tmp;
vector< vector<int> > A(1000000);

int rangos(int pos)
{
    if (nodo[pos].ini)
        return 0;
    nodo[pos].ini = ++cont;
    int tam = A[pos].size();
    if (tam > 1 || !pos)
    {
        while (!A[pos].empty())
        {
            tmp = rangos(A[pos][0]);
            A[pos].erase(A[pos].begin + 1);
            if (tmp > nodo[pos].fin)
                nodo[pos].fin = tmp;
        }
    }
    else
        nodo[pos].fin = nodo[pos].ini;
    return nodo[pos].fin;
}

int main()
{

    scanf("%d %d\n", &n, &q);

    for (int i = 0; i < n - 1; i++)
    {
        scanf("%d %d\n", &a, &b);
        a--;
        b--;
        A[a].push_back(b);
        A[b].push_back(a);
    }

    rangos(0);

    while (q--)
    {
        scanf("%d %d", &a, &b);
        if (q)
            scanf("\n");
        b--;
        a--;
        if ((nodo[a].fin < nodo[b].ini || nodo[a].ini > nodo[b].ini) && a != b)
            res = 1;
        else
            res = 0;
        printf("%d\n", res);
    }

    return 0;
}

我正在尝试解决C ++中的问题,并且由于内存限制,我必须从我的向量向量中擦除元素,但我不知道如何,我的编译器说(这是Visual Studio 2017 )我发送invalids参数,在“A [pos] .erase()”中,有两个错误C3867和C2664,那么什么是正确的方法?

0 个答案:

没有答案