vector 中的clear()

为什么clear之后,还是输出fdsafdsa。有什么办法可以真正清空之?
因为对于vector,clear并不真正释放内存(这是为优化效率所做的事),clear实际所做的是为vector中所保存的所有对象调用析构函数(如果有的话),然后初始化size这些东西,让你觉得把所有的对象清除了。。。

真正释放内存是在vector的析构函数里进行的,所以一旦超出vector的作用域(如函数返回),首先它所保存的所有对象会被析构,然后会调用allocator中的deallocate函数回收对象本身的内存。。。
时间: 2024-10-14 09:46:58

vector 中的clear()的相关文章

java.util.vector中的vector的详细用法

ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector的创建.向Vector中添加元素.从Vector中删除元素. * 统计Vector中元素的个数和遍历Vector中的元素. */ public class VectorDemo{ public static void main(String[] args){ //Vector的创建 //使用Vector

vector中的元素删除

删除vector中的元素,最容易的方法就是使用vector的erase()函数. vector vec;for ( vector::iterator iter = vec.begin(); iter! = vec.end();){    if(某条件成立)        iter = vec.erase(iter);    else        iter ++;} 如果要清空vector中的元素,可以使用erase()循环删除,也可以用clear()函数. for ( vector::iter

C++ stack,queue,vector 中 易混淆的常用方法 浅析

C++ 中stack,queue,vector是常见的数据结构,它们分别封装在<stack>,<queue>,<vector>头文件中. stack,queue,vector的定义如下: stack<class T> s; queue<class T> q; vector<class T> v; stack常用方法: push()的向容器顶部里插入元素: pop()是删除容器顶部的元素: top()返回容器顶部的元素: size()返

STL vector中的rbegin方法(5)

public member function <vector> std::vector::rbegin C++98 C++11 reverse_iterator rbegin() noexcept; const_reverse_iterator rbegin() const noexcept; Return reverse iterator to reverse beginning 返回一个反向的首元素. 例子: #include <iostream> #include <v

【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<algorithm>//貌似可以不用,但最好加上. using namespace std

vector中元素的输入和终止

在Essential C++一书课后题1-6的答案中,有了新的发现. 题目概述为: 编写一个程序,从标准输入设备读取一段整数,并将读入的整数依次放到array及vector中,然后遍历这两种容器,求取数值总和.将总和及平均值输出至标准输出设备. 答案代码: //用vector 解决问题#include<iostream>#include<vector>           //用vector方式的头文件using namespace std; int main(){ vector&

vector中的push_back函数的意思是什么

push_back   就是在vector的末尾插入一个元素, vector 中的erase()函数,从指定容器删除指定位置的元素或者某段范围内的元素,删除之后,返回值也是一个迭代器,指向最后一个删除元素的下一个元素, 出现的问题就是:迭代器变成了一个野指针,需要重新把迭代器的指针指向begin或者把返回的迭代器赋值给原来的迭代器,否则会报编译错误 iter = vetcor.erase(iter); or: vectore.erase(iter); iter=v1.begin;

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换. 1.std::vector::erase() 函数原型:iterator erase (iterator position); //删除指定元素 iterator erase (iterator first, iterator last); //删除指定范围内的元素 返回值:指向删除元素(或

C++中cin.clear()的用法

我们谈谈cin.clear的作用,第一次看到这东西,很多人以为就是清空cin里面的数据流,而实际上却与此相差很远,首先我们看看以下代码: #include <iostream>  using namespace std;  int main()   {              int a;              cin>>a;              cout<<cin.rdstate()<<endl;              if(cin.rds