• 遇到个C++ MAP问题,有谁会的么?


    typedef struct pos
    {
        int x;
        int y;
        bool operator < (const pos &o) const
        {
    
            if((x==o.x)&&(y==o.y))
                return false;
            return true;
        }
    }pos;
    
    pair<map<pos,int>::iterator, bool> ret;
    static map<pos,int>posMap;
    void fss(vector<vector<int>>& image,int x,int y,int num)
    {
        if(x<0)
            return;
        if(x>=image.size())
            return;
        if(y<0)
            return;
        if(y>=image[0].size())
            return;
    
        pos p;
        p.x=x;
        p.y=y;
        ret= posMap.insert(pair<pos,int>(p,1));
        if(!ret.second)
        {
            return;
        }
    
    
    
        if(image[x][y]==num)
    	{
    
            fss(image,x-1,y,num);//左递归
            fss(image,x+1,y,num);//右递归
            fss(image,x,y-1,num);//上递归
            fss(image,x,y+1,num);//左递归
    
        }
    }
    
    int main(int argc, char *argv[])
    {
        vector<int>vec;
        int arr[]={0,0,0};
        for(auto i=0;i<sizeof(arr)/sizeof(int);i++)
            vec.push_back(arr[i]);
    
        vector<int>vec2;
        int arr2[]={0,0,0};
        for(auto i=0;i<sizeof(arr2)/sizeof(int);i++)
            vec2.push_back(arr2[i]);
    
        vector<int>vec3;
        int arr3[]={1,0,1};
        for(auto i=0;i<sizeof(arr)/sizeof(int);i++)
            vec3.push_back(arr3[i]);
    
    
    
        vector<vector<int>> coordinates;
        coordinates.push_back(vec);
        coordinates.push_back(vec2);
    
    
    
        fss(coordinates,0,0,0);
    
    
    
    
        cout<<posMap.size()<<endl;
        map<pos,int>::iterator it;
        for(it=posMap.begin();it!=posMap.end();++it)
        {
            cout<<it->first.x<<" "<<it->first.y<<endl;
        }
        return 0;
    }
    
    

    结果是:

    12
    1 0
    1 2
    0 0
    1 0
    1 1
    1 2
    0 2
    0 0
    0 1
    1 1
    1 0
    0 0
    

    不是说map键具有唯一性么?谁能解释下

  • 相关阅读:
    静态区,堆,栈
    C语言位操作
    引用形参
    联合体/共同体 union
    typedef的使用
    有源晶振和无源晶振
    什么是SMT钢网
    点名游戏~自己先作
    我同学——应聘阿里巴巴之经过
    阳光明媚的一天~|~
  • 原文地址:https://www.cnblogs.com/xiaohai123/p/16320798.html
Copyright © 2020-2023  润新知