怎样在c++ 中删除vector最后一个元素

怎样在c++ 中删除vector最后一个元素,第1张

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()

}

怎么用就不多说了。你懂的,应该的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8276828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存