IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2021-08-06 -> 正文阅读

[C++知识库]2021-08-06

记录一下初次学习C++的一些奇奇怪怪的想法,关于vector中的resize,capacity,reserve方法

想法,C++Primer书中练习9.39,9.40

#include<iostream>
#include<vector>
using namespace std;
int main()	
{
	vector<string> svec;
	//svec.reserve(1024);
	
	string word;
	for(int i=0;i!=1002;i++)
	{
		svec.push_back("i");
	}
	cout<<"capacity_pre1="<<svec.capacity()<<endl;//在每次push_back后都会检查一次,是否size=capacity如果是则将当前capacity=2倍的当前size (先检查大小再写入,还是先写入再扩大我还没研究过)
	svec.push_back("2");
	cout<<"capacity_pre2="<<svec.capacity()<<endl;
	cout<<"resize="<<svec.size()+svec.size()/2<<endl;
	svec.resize(svec.size()+svec.size()/2);
	cout<<"size="<<svec.size()<<" "; 
	cout<<"capacity="<<svec.capacity()<<endl;
	
}

保存一下自己想法,书中只提到了执行insert与resize或者reserve的时候给定大小超过当前capacity才可能重新分配空间。
当resize大小超过capacity的时候,capacity会变成当前非空元素的两倍再于resize中参数进行比较,如果resize的值还是大于翻倍后的capacity ,则capacity大小=resize大小,否则capacity两倍当前非空元素个数(描述感觉有点乱
本例中非空元素为1003个,resize(1504),当前capacity大小为1024,此处的1024是当svec.size()=svec.capacity=512,(当然这个512是在之前256的时候capacity*2得到的).显然1504>1024 ,但最终capacity大小为2006。
编译器Dev-C++ 5.10 运行结果
在这里插入图片描述
如果我们改一下让resize大于两倍非空元素的个数这里随便给一个3000,

sevc.resize(3000);

在这里插入图片描述
显然3000>2006,最终的capacity变成了3000
虽然不知道这个知识点有什么用,但先记录一下(:

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:49:05  更:2021-08-07 11:50:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 1:48:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码