std::string的resize()与reserve()的区别
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()的区别相关推荐
- std::vector中resize()和reserve()区别
在STL容器中vector用的还是比较多的,但是在使用时,会对resize()和reserve()的使用产生迷惑,现在就对这一情况做个对比: resize():改变的是size()与capacity( ...
- STL 里 resize 和 reserve 的区别
resize 和 reserve 的区别 resize() reserve() 测试代码 resize() 改变当前容器内含有元素的数量(size()),eg: vectorv; v.resize(l ...
- STL里resize和reserve的区别?
vector和deque的区别? 两个函数的功能是有区别 reserve是容器预留空间 resize是改变容器的大小,并且创建对象 reserve函数之后一个参数,即需要预留的容器的空间 为实现res ...
- vector的 resize()和reserve()的区别
为了支持快速随机访问,vector将元素连续存储--每个元素紧挨着前一个元素存储. 关于vector对象是如何改变容器大小? resize(n) 调整容器元素个数为n,如果n小于容器的原size,则删 ...
- vector中resize()和reserve()区别
vector中resize()和reserve()区别 本博客转载自:https://blog.csdn.net/jocodeoe/article/details/9230879 先看看<C++ ...
- 转: std::string用法详解
原文地址为: 转: std::string用法详解 C++中的string 类 简单介绍 前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱 ...
- 【C++标准库】std::string用法指南源码剖析
文章目录 1.ASCII码 (1)计算机如何表达字符 2.C 语言中的字符类型 char (1)思想:char 即整数 (3)C 语言帮手函数 (4)C语言中的字符串 (4)C 语言转义符 3.C++ ...
- std的list, vector, map,multimap, set 区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...
- C++/C++11中std::string用法汇总
C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...
最新文章
- 2018-2019-1 20165201 《信息安全系统设计基础》第6周学习总结
- mysql与配偶同性_mysql 左,右,内连接
- 文巾解题 1765. 地图中的最高点
- python中list是什么意思_python中list和list [:]有什么区别?
- What Are You Talking About
- php json解析教程,php解析json
- 删除字符串的前置或者后置空格
- 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
- [TIPS]数据库 应用软件 MSSMS
- ASP.NET_ASP.NET Cookies
- ios mysql 创建不同的用户表_移动端iOS系统数据库之Realm(二)表的创建增删改查(多表)...
- 软考计算机评职称,软考通过后如何评职称?
- kodi文件管理smb服务器,KODI win10,kodi不能发现smb共享
- 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
- nginx配置导致ios上传不了图片
- [prolog 基础系列] Prolog 的使用以及 Knowledge Base
- 双稳态电路的两个稳定状态是什么_NE555集成电路--交替闪烁灯
- 修复SQL2000数据库一致性错误的语句
- 为什么要安全域,哪些区域需要单独划分安全域
- 一小段经历后的感想和自述。