stl 常见问题
来源:互联网 发布:java飞机大战扇形子弹 编辑:程序博客网 时间:2024/06/07 16:29
一:vector
1 vector 内存泄漏
当vector中含有指针,不仅要erase 这个元素。而且element指向的空间也要delete掉
要将it delete掉,仅仅erase不可以,没人释放disk,造成内存泄漏
eg:
Disk *tempdisk = *it;
vector<Disk*> watched_disks;
it = watched_disks.erase(it);
delete tempdisk; //释放
2 (*ret)整体看成一个对象,类似 vecotr vec; vec[1]
#include <vector>
#include <iostream>
using namespace std;
main()
{
vector <int> *ret;
ret = new vector<int>[5];
ret->push_back(0);
ret->push_back(1);
ret->push_back(2);
ret->push_back(3);
cout <<(*ret)[1]<<endl;
cout <<ret->front()<<endl;
}
3 遍历数组
#include <vector>
#include <iostream>
using namespace std;
main()
{
vector<int> v{1,2,3,4,5,6,7,8,9};
//i is local variable. so two i is different
//&i is refence for v[0],[1]...
for (auto &i :v)
{
cout <<"line9:"<<i<<endl;
i*=i;
cout <<"line11:"<<i<<endl;
}
//i is just variable
for (auto i :v)
{
cout <<"line9:"<<i<<endl;
i*=i;
cout <<"line11:"<<i<<endl;
}
for (auto i : v)
cout <<i<<" ";
cout <<endl;
}
#include <iostream>
using namespace std;
main()
{
vector<int> v{1,2,3,4,5,6,7,8,9};
//i is local variable. so two i is different
//&i is refence for v[0],[1]...
for (auto &i :v)
{
cout <<"line9:"<<i<<endl;
i*=i;
cout <<"line11:"<<i<<endl;
}
//i is just variable
for (auto i :v)
{
cout <<"line9:"<<i<<endl;
i*=i;
cout <<"line11:"<<i<<endl;
}
for (auto i : v)
cout <<i<<" ";
cout <<endl;
}
4
vector remove是假删,那用它干嘛?直接用erase就完了。因为用法简便,不用for
5 vector 莫名其妙 coredump 到pushback(*p) reallocate 的时候出现, 改成 list 没问题了
阅读全文
0 0
- STL--常见问题
- STL常见问题
- STL常见问题
- stl 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 常见问题
- 递归算法问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不会死。问: 第20个月的兔子总对数为多少?(提示:先分析兔子的增长规律)
- 爬虫遇到的问题
- 深入理解IIS的多线程工作机制
- OpenCV—形态学运算定义与实现
- 原生android工程实现RN集成
- stl 常见问题
- 动态规划的一些笔记
- JavaScript中的this
- 排序——交换排序
- 阿里巴巴Java开发手册
- uubuntu 常见的操作命令
- 网络编程中(socket)用户登录验证以及注册(单用户)
- lua调用c++
- 比特币现金BCC的出现带来了这些套利机会