求助,关于vector的问题

问题描述

#include<iostream>#include<vector>usingnamespacestd;template<typenameT>voidlistInfo(vector<T>&v){cout<<"Containercapacity:"<<v.capacity()<<"size:"<<v.size()<<endl;}intmain(){vector<double>data;listInfo(data);cout<<endl<<"Aftercallingreserver(100):"<<endl;data.reserve(100);listInfo(data);vector<int>numbers(10,-1);cout<<endl<<"Theinitialvaluesare:";for(vector<int>::size_typei=0;i<numbers.size();i++)cout<<""<<numbers[i];cout<<endl;vector<int>::size_typeoldc=numbers.capacity();vector<int>::size_typenewc=oldc;cout<<endl;listInfo(numbers);for(inti=0;i<1000;i++){numbers.push_back(i);newc=numbers.capacity();if(oldc<newc){oldc=newc;listInfo(numbers);}}return0;}其中运行结果如下:分析下,为啥?为什么capacity每次增加size的一半Containercapacity:10size:10Containercapacity:15size:11Containercapacity:22size:16Containercapacity:33size:23Containercapacity:49size:34Containercapacity:73size:50Containercapacity:109size:74Containercapacity:163size:110Containercapacity:244size:164Containercapacity:366size:245Containercapacity:549size:367Containercapacity:823size:550Containercapacity:1234size:824

解决方案

解决方案二:
capacity是vector占据的实际内存空间size是vector中的实际元素个数capactiry总是大于等于size其目的是避免频繁的内存重分配而影响性能至于capacity一次增加多少记得之前看过effectivec++上有提到过
解决方案三:
就是的默认增加一半,说是为了提高效率。其实我觉得你管他增加多少。只要能添加删除。没有丢失就行。这个还是比较好用的
解决方案四:
增加多少可以定制的。
解决方案五:
capacity不想这样,可以给capacity赋值。就能节省一点内存空间。

时间: 2024-10-02 12:23:20

求助,关于vector的问题的相关文章

求助,vector对象如何保存到文件中?

问题描述 我是Java初学者,请问是否可以将vector的对象直接保存到文件中和从文件中读取呢?写的是一个电话本程序,conects是一个vector对象.下面是代码的一部分,是我照着书上自己乱写的,一保存就会报异常.求大神指导.publicvoidSave(Filefile){//保存方法try{FileOutputStreamtext=newFileOutputStream(file);ObjectOutputStreamfw=newObjectOutputStream(text);fw.w

求助,c++ vector使用出现问题

问题描述 求助,c++ vector使用出现问题 #include #include using namespace std; void merge( vector& a, int first, int mid, int last ) { vector s1 = { a.begin() + first, a.begin() + mid }; vector s2 = { a.begin() + mid + 1, a.begin() + last }; int i = 0; int j = 0; i

java-【求助】关于JAVA中的Vector的问题

问题描述 [求助]关于JAVA中的Vector的问题 在读Thinking in Java的时候,看到这样一段代码,有点迷惑,希望高手帮忙解答一下~class GopherVector{ private Vector v = new Vector(); public void addElement(Gopher m){ //Gopher为之前定义过的一个类 v.addElement(m); }}这段代码不明白的地方是第四行v.addElement(m),如果我GopherVector g = n

c++初学者求助:c++vector 初始化出现问题

问题描述 c++初学者求助:c++vector 初始化出现问题 #include #include using namespace std; int main() { vector v1; vector v2; cout<<"请输入v1的内容,整数"< int i=0,j=0; while(cin>>i) v1.push_back(i); cout<<"请输入v2的内容,整数"< while(cin>>j)

c++基础-【初学者跪地求助】一个关于类中vector类型调用的问题。

问题描述 [初学者跪地求助]一个关于类中vector类型调用的问题. 一个项目管理的程序,现在在写输出项目中任务列表的功能. getTaskList()函数中似乎总是无法调用project类中的 任务列表vector 程序运行就会崩溃 C++初学者求帮助啊! 数据已经由initData()函数初始化 有两个包含任务列表的容器 还有一个包含项目列表的容器 #include #include #include using namespace std; class Time { public: Tim

代码-pat求助(有一个测试点通过不了:异常退出,检查了好久也没发现原因,求检查)

问题描述 pat求助(有一个测试点通过不了:异常退出,检查了好久也没发现原因,求检查) 题目如下:1039. Course List for Student (25) 时间限制200 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN YueZhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the

c++-初学C++中类的使用,求助

问题描述 初学C++中类的使用,求助 初学类的使用,在Accelerated C++上遇到编程题目如下:编写一个类以及相关的函数以为学生产生成绩,用P/F表示成绩假设只根据期中和期末成绩来计算,而且,如果一个学生的平均考试分数大于等于60的话,那这个学生及格输出时列出学生姓名并列出相应的成绩,成绩用P/F表示从data.txt读入成绩信息,将成绩输出到result.txt data.txt截图如下: 以下是我的代码:#include#include#include#include#include

树-一道编程题,用c++编程,求助

问题描述 一道编程题,用c++编程,求助 给定一颗无根树,假设它有n个节点,节点编号从1到n,求任意两点之间的距离之和,也就是求任意一点到其它点的距离之和,边长都为1.要求时间复杂度为O(n) 解决方案 先做一遍DFS求出所有节点到根节点的距离之和,然后可以发现,如果知道到一个点的距离之和,可以用O(1)求出所有节点到它相邻点的距离之和 解决方案二: /* ***********************************************Author :xdloveCreated T

新手求助 c++primer P98

问题描述 新手求助 c++primer P98 #include #include using namespace std; int main(){ const vector text{"some string"}; for (auto it = text.cbegin(); it != text.cend() && !it->empty(); ++it) cout << *it<< endl; return 0; } 这个程序错误在哪?提