Vector怎么清空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vector怎么清空相关的知识,希望对你有一定的参考价值。
参考技术A 为了防止内存泄露,习惯于new的时候,顺手就写一个delete。于是delete多了,想偷懒,顺手就写了一个宏,
#define DEL(p) delete p; p = NULL;
又遇到需要delete数组,就又写了一个宏
#define DELX(p) delete[] p; p = 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 = 0; i < n; i++ )
T* p = v[i];
DEL( p );
v.clear();
怎么用就不多说了。你懂的,应该的。
清空表应该怎么写?
比如我要清空表stu的所有数据。如果只要清空指定的数据,比如说第10条以后的数据,又应该怎么写呢?
清空所有数据:Truncate Table stu或者Delete stu。
清空第10条以后数据:Delete From Stu Where id Not In、
Select Top 10 id From stu Order By id。
数据库清空表使用delete和truncate语句,但这两个命令语句是有区别的:
首先区别在于,delete是数据库操作语句而非命令语句,直接清空的是数据,能够触发触发器等操作。而truncate是命令语句,不会触发触发器等操作,但不能回滚。truncate语句是直接提交的数据库的,而delete是DML语句。delete还会保留数据库的高水线。打个比方,你就能知道最简单的区别。比如你的表中有一个自增长的ID,truncate之后,ID会重新开始编码,但delete会接着你删除的最大值进行编码。语法上 delete可以带where条件,删除指定数据,但truncate是不能的,只能全部清空表。
下面写一下两个语句清空表的语法:delete table、truncate table。
参考技术A 清空表数据:delete stu;清空前十条:delete from stu where id Not in (select TOP 10 id from stu order by id)
数据库(Database)是按照 数据结构来组织、 存储和管理数据的仓库,它产生于距今六十多年前,随着 信息技术和市场的发展,特别是二十世纪九十年代以后, 数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种 类型,从最简单的存储有各种数据的 表格到能够进行海量 数据存储的大型 数据库系统都在各个方面得到了广泛的应用。
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
以上是关于Vector怎么清空的主要内容,如果未能解决你的问题,请参考以下文章
Vector清空数据与释放内存(.clear与.swap的区别与使用)
pybind11 - 如果访问了结构的任何成员,则 boost::optional 结构的 std::vector 成员将被清空