std::string的resize()与reserve()的区别:

resize():改变的是size()与capacity()的大小

(1)、比原来的变小之后,后面的会被截断

(2)、比原来的变大之后,后面的会被填充新的东西,不同的编译器可能会不同

reserve():改变的只是capacity()的大小

程序如下:

#include <math.h>
#include <stdio.h>
#include <string>
#include<iostream>using namespace std;int main()
{std::string s1("hello");std::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "after resize to 2" << endl;s1.resize(2); //尺寸由5改变为2,多余字符被截掉了,只剩下hestd::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "after resize to 100" << endl;s1.resize(100);//尺寸由2改变为100,后面的数据被填充了98个astd::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "\n";std::cout << "===================================================================" << endl;std::cout << "\n";std::string s2("hello");std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;std::cout << "after reserve to 20" << endl;s2.reserve(20);  //只改变capacity()的大小,其他的不变std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;std::cout << "after reserve to 2" << endl;s2.reserve(2);   //只改变capacity()的大小,其他的不变std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;return 0;
}

结果:

std::string的resize()与reserve()的区别相关推荐

  1. std::vector中resize()和reserve()区别

    在STL容器中vector用的还是比较多的,但是在使用时,会对resize()和reserve()的使用产生迷惑,现在就对这一情况做个对比: resize():改变的是size()与capacity( ...

  2. STL 里 resize 和 reserve 的区别

    resize 和 reserve 的区别 resize() reserve() 测试代码 resize() 改变当前容器内含有元素的数量(size()),eg: vectorv; v.resize(l ...

  3. STL里resize和reserve的区别?

    vector和deque的区别? 两个函数的功能是有区别 reserve是容器预留空间 resize是改变容器的大小,并且创建对象 reserve函数之后一个参数,即需要预留的容器的空间 为实现res ...

  4. vector的 resize()和reserve()的区别

    为了支持快速随机访问,vector将元素连续存储--每个元素紧挨着前一个元素存储. 关于vector对象是如何改变容器大小? resize(n) 调整容器元素个数为n,如果n小于容器的原size,则删 ...

  5. vector中resize()和reserve()区别

    vector中resize()和reserve()区别 本博客转载自:https://blog.csdn.net/jocodeoe/article/details/9230879 先看看<C++ ...

  6. 转: std::string用法详解

    原文地址为: 转: std::string用法详解  C++中的string 类 简单介绍 前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱 ...

  7. 【C++标准库】std::string用法指南源码剖析

    文章目录 1.ASCII码 (1)计算机如何表达字符 2.C 语言中的字符类型 char (1)思想:char 即整数 (3)C 语言帮手函数 (4)C语言中的字符串 (4)C 语言转义符 3.C++ ...

  8. std的list, vector, map,multimap, set 区别与用法比较

    List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...

  9. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

最新文章

  1. 2018-2019-1 20165201 《信息安全系统设计基础》第6周学习总结
  2. mysql与配偶同性_mysql 左,右,内连接
  3. 文巾解题 1765. 地图中的最高点
  4. python中list是什么意思_python中list和list [:]有什么区别?
  5. What Are You Talking About
  6. php json解析教程,php解析json
  7. 删除字符串的前置或者后置空格
  8. 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
  9. [TIPS]数据库 应用软件 MSSMS
  10. ASP.NET_ASP.NET Cookies
  11. ios mysql 创建不同的用户表_移动端iOS系统数据库之Realm(二)表的创建增删改查(多表)...
  12. 软考计算机评职称,软考通过后如何评职称?
  13. kodi文件管理smb服务器,KODI win10,kodi不能发现smb共享
  14. 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
  15. nginx配置导致ios上传不了图片
  16. [prolog 基础系列] Prolog 的使用以及 Knowledge Base
  17. 双稳态电路的两个稳定状态是什么_NE555集成电路--交替闪烁灯
  18. 修复SQL2000数据库一致性错误的语句
  19. 为什么要安全域,哪些区域需要单独划分安全域
  20. 一小段经历后的感想和自述。

热门文章

  1. 阿里云胡晓明:数据智能将为城市生活带来真正价值
  2. linux nexus 使用问题
  3. node.js Websocket消息推送---GoEasy
  4. SpringJDBC解析3-回调函数(update为例)
  5. NTFS文件系统的简述
  6. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)
  7. vb.net中东软医保接口的调用
  8. [jQuery]3D效果的标签云
  9. IT餐馆—第十六回 驱动
  10. C语言中临时变量写在哪里,C语言中不允许创建临时变量,交换两个数的内容