vector和string
我这里不是将他们的区别,主要讲使用他们时要注意的一些问题,主要体现在内存方面。
C++中,我们很少使用C中的数组,使用数组就意味着承担:
- new一个数组以后,必须保证有delete来删除所分配的内存。最好是指针句柄可以*p=NULL。
- 必须使用正确的delete,单个对象分配内存时使用delete,多个对象分配内存时使用delete[ ]。
- 一个对象必须只被delete了一次,多次会出现意想不到的错误。
- 分配一块大小为当前容量的某个倍数的心内存,大多数情况下是2倍。
- 把容器中的所有元素从旧的内存复制到新的内存中
- 析构掉旧内存中的对象
- 释放旧内存
- size()告诉我们容器中有多少个元素,但不会告诉我们容器可以容纳多少个元素。
- capacity()该容器已经分配的内存可以容纳多少个元素,也就是容器可以容纳的总元素个数。如果想知道一个容器还有多少内存可以使用,那capacity()-size()就知道了。
- resize(Container::size_type n)强迫容器改变到含有n个元素的状态,返回值是n。如果n比当前的容量小,就析构掉容器尾部的元素。如果大于当前容量就重新分配内存
- reserve(Container::size_type n)强迫容器把它的容量变为至少n,如果n大于当前容量就变为n,小于则不变,vector直接忽略该函数,不调用,string一般用swap技巧实现内存的释放。
vector和string相关推荐
- 8.了解如何把vector和string数据传给旧的API
vector和string都是使用连续内存来存储数据,可以类似于普通数组进行处理. std::vector<int> datas; std::string strData; 获取vecto ...
- 向顺序容器vector、string、deque、list、forward_list中插入\删除元素时迭代器、引用、指针的变化
1.插入元素 (1)对于vector.string来说,当在某个位置插入元素后,如果内存空间重新分配,则指向任何位置的迭代器.指针.引用都会失效: 如果内存空间没有重新分配,则在插入位置之前的迭代器. ...
- 获取顺序容器vector,deque,string和array的首尾元素的方法有四个
获取顺序容器vector,deque,string和array的首尾元素的方法有四个: (1)迭代器 (2)下标 (3)front() 和 back()成员函数 (4)at()成员函数 如下所示,得到 ...
- 使用reserve函数避免vector和string的内存重新分配
vector和string内部维护的内存会"自动增长",以便容纳不断放入其中的元素.调用max_size()可以返回其容量的最大限制. "自动增长"的过程如下: ...
- 【S13】vector和string优先于动态分配的内存
1.使用new动态分配内存,必须承担如下责任: a.使用delete释放内存: b.确保使用了正确的形式,delete与new的形式要匹配: c.不能重复delete. 2.使用vector和stri ...
- STL标准模板库中的vector、string、deque、stack、list、set和map的详细介绍——C++学习记录01
文章目录: 1.vector 1.1 遍历方式 1.2 构造函数 1.3 容量大小问题 1.4 插入和删除 1.5 存取值 1.6 交换两个vectot的元素 1.7 预定义存储空间 2.string ...
- EC3-13 Prefer vector and string to dynamically allocated arrays
用new动态分配内存时,意味着还需要:确保之后会delete删除分配的内存,正确的使用delete和delete[],确保一个分配只delete一次. 然而用vector和string,就可以避免这些 ...
- vector int string 化
为什么80%的码农都做不了架构师?>>> #include <iostream> #include <vector> #include <algo ...
- C++知识点4——vector与string简述
string 使用string类必须包含头文件#include<string> string对象的初始化 1.默认初始化 string s1; 2.拷贝初始化 string s4=s1; ...
最新文章
- h5滚动时侧滑出现_H5触摸事件中如何判断用户滑动方向
- Spring Boot 线程池的创建、@Async 配置步骤及注意事项
- Cadence Orcad元器件位号重排与原理图页序号重排
- 微型计算机原理综合实验,微机原理综合实验指导书
- 数学中各种矩阵收集(转至其他博主)
- mysql增量_mysql实时增量备份
- C++primer 第 4 章 表达式 4.1基础 4 . 2 算术运算符 4 .3 逻辑和关系运算符 4 . 4 赋值运算符 4 .5 递增和递减运算符 4.6成员访问运算符
- 深度学习(七十二)tensorflow 集群训练
- drf版本控制 和django缓存,跨域问题,
- 清华大学 TUNA 协会
- Mondrian xml服务mysql_mondrian与java工程的集成
- 阿里云ECS服务器Linux-ubuntu18环境搭建
- html表格基础及案例示图代码。
- python 完全背包问题_python背包问题
- html脚注制作,幸福西饼:静态页面制作项目总结
- response.getStatusCode()==200什么意思
- 抖音、腾讯世纪大和解,透露了哪些信息?
- 外设驱动(一)E-Paper墨水屏扫描显示原理
- idea 设置黑色或白色背景以及图片背景
- linux 端口耗尽,短连接以致端口耗尽
热门文章
- java初始化配置_java – 初始化没有XML配置的数据库,但使用@Configuration
- 专访徐勇州:腾讯云全球化布局势如破竹,构建全球24小时无差别服务︱大咖访谈录...
- gdb调试mpi程序
- 数据降维降维(二)----Laplacian Eigenmaps
- 关于“小米盒子”等的被喷
- Ubuntu10.04设备未托管
- struts-step
- OpenCV-模板匹配cv::matchTemplate
- OpenCV-理想高通低通滤波器(C++)
- mysql三张表关联查询成绩表_mysql三张表关联查询