即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

相关c++map

编程语言 h1023417614 18℃ 0评论

1.只有重载<的类或者结构才能作为map的key值。





class C


{


public:


    int i;


    string str;


    bool operator < (const C &c) const


    {


        return i < c.i;


    }


};


 








2.通过key获取value的方法





在map中,由key查找value时,首先要判断map中是否包含key。


如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。




map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。


3.map 的erase

map 是关联容器,对于关联容器来说,如果某一个元素已经被删除,那么其对应的迭代器就失效了,不应该再被使用;否则会导致程序无定义的行为。正确的写法

1.使用删除之前的迭代器定位下一个元素。STL建议的使用方式

    for (map::iterator i= mymap.begin();i != mymap.end() 😉


    {


        if (i->second == “3333”)


        {


            mymap.erase(i++);


        }


        else


        {


            ++i;


        }

    }


但对于vector

    for(vector::iterator iter=myvector.begin(); iter!=myvector.end(); )


    {


         if( *iter == 3)


              iter = myvector.erase(iter);


          else


                iter ++ ;


    }









转载请注明:CodingBlog » 相关c++map

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情