stl map容器中指针的释放
来源:互联网 发布:留学办什么银行卡知乎 编辑:程序博客网 时间:2024/05/17 07:08
struct MyStruct
{
int i;
char c;
MyStruct(int i, char c)
{
this->i = i;
this->c = c;
}
};
int stl_ptr_test()
{
MyStruct* pst1 = new MyStruct(1, 'a');
MyStruct* pst2 = new MyStruct(1, 'a');
MyStruct* pst3 = new MyStruct(3, 'c');
map<int, MyStruct*> map1; // 其中的value为指针型的
map1.insert(pair<int, MyStruct*>(10, pst1));
map1.insert(pair<int, MyStruct*>(11, pst2));
map1.insert(pair<int, MyStruct*>(12, pst3));
map<int, MyStruct*>::iterator iter = map1.find(11);
cout << iter->second->i << ' ' << iter->second->c << endl;
MyStruct* pst = iter->second;
pst->c = 'b';
iter = map1.find(11);
cout << iter->second->i << ' ' << iter->second->c << endl;
iter = map1.find(10);
delete iter->second; // 释放指针
map1.erase(10); // 从map中删除元素
iter = map1.find(10);
if (iter == map1.end())
{
cout << "not found" << endl;
}
else
{
cout << "found: " << iter->second->i << ' ' << iter->second->c << endl;
}
for (iter = map1.begin(); iter != map1.end();)
{
cout << iter->second->i << " " << iter->second->c << endl;
delete iter->second; // 释放指针
map1.erase(iter++); // 从map中删除元素,注意iter++的写法
}
map1.clear();
return 0;
}
{
int i;
char c;
MyStruct(int i, char c)
{
this->i = i;
this->c = c;
}
};
int stl_ptr_test()
{
MyStruct* pst1 = new MyStruct(1, 'a');
MyStruct* pst2 = new MyStruct(1, 'a');
MyStruct* pst3 = new MyStruct(3, 'c');
map<int, MyStruct*> map1; // 其中的value为指针型的
map1.insert(pair<int, MyStruct*>(10, pst1));
map1.insert(pair<int, MyStruct*>(11, pst2));
map1.insert(pair<int, MyStruct*>(12, pst3));
map<int, MyStruct*>::iterator iter = map1.find(11);
cout << iter->second->i << ' ' << iter->second->c << endl;
MyStruct* pst = iter->second;
pst->c = 'b';
iter = map1.find(11);
cout << iter->second->i << ' ' << iter->second->c << endl;
iter = map1.find(10);
delete iter->second; // 释放指针
map1.erase(10); // 从map中删除元素
iter = map1.find(10);
if (iter == map1.end())
{
cout << "not found" << endl;
}
else
{
cout << "found: " << iter->second->i << ' ' << iter->second->c << endl;
}
for (iter = map1.begin(); iter != map1.end();)
{
cout << iter->second->i << " " << iter->second->c << endl;
delete iter->second; // 释放指针
map1.erase(iter++); // 从map中删除元素,注意iter++的写法
}
map1.clear();
return 0;
}
- stl map容器中指针的释放
- C++类中静态STL容器中的指针所指向的动态内存空间如何释放!
- stl容器内指针元素的使用与释放
- STL中map容器的元素插入
- STL 中容器 map 的使用
- STL中map容器的操作
- STL 中map 容器的基本用法
- STL中关联容器map的用法
- STL中map容器的一点点用法
- STL容器中 指针的清理
- STL中各个容器的内存的释放
- STL容器中 存放指针与对象区别 遍历删除与释放操作
- Map容器的用法(STL)
- Map容器的用法(STL)
- Map容器的用法(STL)
- STL中map容器的几种插方法的区别
- STL容器vector内存的正确释放
- STL中map与hash_map容器的选择
- 学习NodeJS第一天:node.js引言
- A* 寻路算法
- ADSP-21369 A1的主频
- 学习NodeJS第二天:漫谈NodeJS
- WinSCP 与 Putty 中文显示乱码解决方法
- stl map容器中指针的释放
- 在SHELL的提示符上显示完整路径
- 探梦方寸间 移动终端CPU、GPU浅析(转)
- 在Linux上建立文件夹指向在Win共享的文件夹
- 用Htmlhelp Workshop制作符合Windows98规范的帮助文件
- Upgrading to Oracle Database 10g
- 第7章——函数
- 常用CentOS vsftpd安装设置讲解
- MD5加密算法