c++可以使用 vector 的成员函数 pop_back() 来删除容器尾部的元素。
vector在C++标准模板库中的部分内容,它是一个多功能的,能够 *** 作多种数据结构和算法的模板类和函数库。
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数源键据。
扩展资料:
vector的缺点:
1、时间开销较大,运行速度与数组相比较慢。
2、clear()无法清空内存。
注意:vector属于std命名域的,因此需要通过命名限定。
建议在代码量不大,并且使用的命名空间不多的情况下,使用全局的命名域方式:using namespace std函数。
vector常用方法:
1、c.assign(beg,end) c.assign(n,elem)将(begend)区间中的数据赋值给c。将n个elem的拷贝赋值给c。晌返传回索引idx所指的数据,如果idx越界,抛出out_of_range。
2、c.back(),传回最后一个数据,不检查这个数据是否存在。
3、c.begin(),传回迭代器中的第一个数据地址。
4、c.capacity(),返回容器当前已分配的容量。
5、c.clear(),移除容器中所有数据。
6、c.empty(),判断容器是否为空。
c.end() //指向迭代器中末端元素的下一个,指向一个不存在元素。
c.erase(pos)// 删除pos位置的数据,传回下一个数据的位置。
c.erase(beg,end)
删除[beg,end)区间的数据,传回下一个数据的位置。
7、c.front(),传回第一个宴裂饥数据。
参考资料来源:百度百科-vector
~vector()是析构函数,也就是说v已经被析构纳磨了,不能再使用了
v.clear()
是清空v里面的元素,跟洞闹斗v.erase(v.begin(),b.end())
一样,是把v里面的第一个元素到最后一个元素都删除,但跟析构弯弊函数有区别,这个v还能再使用,比如可以再插入v.insert(p)
为了防止内存泄露,习惯于new的时候,顺手就写一个delete。于是delete多了,想偷懒,顺手就写了一个宏,
#define DEL(p) { delete pp = NULL}
又遇到需要delete数组,就又写了一个宏
#define DELX(p) { delete[] pp = NULL}
自从开始用了STL,vector就成了最最常用的数据结构,
有阵子听说印度人用数组可以搞定一切数据结构,心痒痒的实践了1、2年。
那阵子有些走火入魔,的确,数组可以搞定一切数据结构,尤其用STL::vector这个动态数组。
不过说是这么拿银兆说消租,还是需要在逻辑简单搏银和代码易懂之间找到一个平衡点,当然前提是实现功能。
1.该用map的还是得用map
2.n个vector描述同个数据,不如新建一个class包一下,再调用指针
于是我发现写代码的时候,有很多的时间都在敲怎么清除vector指针的内存。
每次都敲一遍又一遍的类似的无聊代码,于是懒人有懒办法,加入了一个template函数,分享
template<class T >
void ClearVector( vector<T* >&v )
{
int i
int n = (int)v.size()
for( i = 0i <ni++ )
{
T* p = v[i]
DEL( p )
}
v.clear()
}
怎么用就不多说了。你懂的,应该的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)