博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vector学习之删除元素操作erase, pop_back, clear,shrink_to_fit
阅读量:2193 次
发布时间:2019-05-02

本文共 2081 字,大约阅读时间需要 6 分钟。

我们知道vector的删除操作有clear,pop_back,erase,C++11还增加shrink_to_fit函数,那么他们的作用是什么呢?

clear清除所有内容,

pop_back移除末尾元素。

erase擦除元素,通过迭代器索引操作

shrink_to_fit释放未使用的存存减少内存的使用

下面是代码示例:

#include 
#include
#include
using namespace std;typedef struct Personal3{ int m_age; int m_height; string m_name;}Person3;void erase_pop_back_Test(){ cout << "erase_pop_back_Test==========" <
vecInt; vecInt.push_back(1073741824); cout << "vecInt.max_size()=" << vecInt.max_size() << " vecInt[0]=" << vecInt[0] <
vec1; Person3 person; person.m_name = string("床前明月光,疑似地上霜,举头望明月,低头思故乡。"); for(int i = 0; i < count; i++)//214748 { person.m_age = i; person.m_height = i; vec1.push_back(person); } cout << "vec1.size=" << vec1.size() << " vec1.capacity=" << vec1.capacity() << endl; cout << "start vec1.empty()====" << vec1.empty() << endl; vec1.clear(); cout << "end vec1.empty()====" << vec1.empty() << endl; cout << endl; vec1.reserve(count); for(int i = 0; i < count; i++) { person.m_age = i; person.m_height = i; vec1.emplace_back(person); } cout << "vec2.size=" << vec1.size() << " vec2.capacity=" << vec1.capacity() << endl; vec1.shrink_to_fit();//释放未使用的空间 cout << "vec3.size=" << vec1.size() << " vec3.capacity=" << vec1.capacity() << endl; vec1.erase(vec1.begin()); cout << "vec4.size=" << vec1.size() << " vec4.capacity=" << vec1.capacity() << endl; vec1.pop_back(); cout << "vec5.size=" << vec1.size() << " vec5.capacity=" << vec1.capacity() << endl; vec1.clear(); cout << "vec6.size=" << vec1.size() << " vec6.capacity=" << vec1.capacity() << endl; vec1.shrink_to_fit(); cout << "vec7.size=" << vec1.size() << " vec7.capacity=" << vec1.capacity() << endl; cout << endl;}int main(){ //int = [-2147483648, 2147483647] erase_pop_back_Test(); cout<< endl; cout << "Hello World!" << endl; return 0;}

从以上结果看,clear,pop_back,earse只是删除内容,并不能删除vector的存储空间,C++11提供了shrink_to_fit可以清理存储空间。

 

 

 

转载地址:http://tfiub.baihongyu.com/

你可能感兴趣的文章
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>