新手问2个问题!!
1..如果以个类中的全局变量 map对象
class cls
{
public:
map<int,Object> _map;
};
在方法中;;
void fun()
{
Object obj;
_map[1] = obj;
}
以上 obj是不是在出方法后;对象会自动销毁掉呢?;; 如果销毁掉 会不会 map里也会没值得;
2. 如何删除一个map对象呢?? 不用迭代器
比如我会的一个key值为 5; 我要删除 key为5的; _map.erase(5)//error ; 如何删除。不用迭代器
3. 多线程问题
如果2个线程 分别 执行 fun1 fun2 方法;; 以下情况是不是永远会在一个方法里执行,,不会离开临界区啊;
void fun1()
{
EnterCriticalSection(cs)
while(1)
{
获取消息
处理消息
}
LeaveCriticalSection(&cs);
}
void fun2()
{
EnterCriticalSection(cs)
while(1)
{
获取消息
处理消息
}
LeaveCriticalSection(&cs);
}
[解决办法]
1、cls类需要提高拷贝构造函数
2、需要迭代器,用find
3、临界区放在while里
[解决办法]
/*2. 如何删除一个map对象呢?? 不用迭代器
比如我会的一个key值为 5; 我要删除 key为5的; _map.erase(5)//error ; 如何删除。不用迭代器*/
std::map<int,int>_map;
_map[5] = 10;
printf("%d,%d\n",_map[5],_map.size());
_map.erase(5);
printf("%d,%d\n",_map[5],_map.size());