vector内部实现问题
不说闲话,先发程序和结果.
/***********************************
****** DEV C++ *******
101
200
12
4
9
After reserve
101
1000
12
**********************************/
/*******************************
******** visual c++ ********
101
150
20
4
10
After reserve
101
1000
20
******************************/
我们问题主要是
sizeof(v1) = 12,20 那个是什么大小?? 难道是类的大小。
还有 &start-&end 为什么是9,10 ?这个为什么不是8,或者其他.
哪位从vector内部实现的角度给我讲讲?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int start = 1;
vector<int> v1(100);
v1.push_back(1); //
cout<<v1.size()<<endl; // 101
cout<<v1.capacity()<<endl; // 200
int end = 1;
cout<<sizeof(v1)<<endl; // 12
cout<<sizeof(start)<<endl; // 4
cout<<&start-&end<<endl; //9
cout<<"After reserve"<<endl;
v1.reserve(1000);
cout<<v1.size()<<endl; //101
cout<<v1.capacity()<<endl; //1000
cout<<sizeof(v1)<<endl; //12
system("PAUSE");
return 0;
}
/***********************************
****** DEV C++ *******
101
200
12
4
9
After reserve
101
1000
12
**********************************/
/*******************************
******** visual c++ ********
101
150
20
4
10
After reserve
101
1000
20
******************************/
我们问题主要是
sizeof(v1) = 12,20 那个是什么大小?? 难道是类的大小。
还有 &start-&end 为什么是9,10 ?这个为什么不是8,或者其他.
哪位从vector内部实现的角度给我讲讲?
...全文
相关推荐
C++ vector使用与实现[源码]
vector的扩容策略有时会对性能产生较大影响,因此在性能敏感的应用中需要注意vector的使用时机和频率。vector的模拟实现是一个较为复杂的过程,涉及到对STL内部实现机制的理解。
C++ Vector模拟实现[项目代码]
这些操作都会影响到vector的内部状态,尤其是容量和大小的变化。对于vector的二维数组构建,这是通过嵌套vector来实现的。
C++ vector类模拟实现[项目代码]
在实现vector的过程中,迭代器失效是一个重要的问题,这是因为vector在执行增删操作时可能会导致内部存储空间的重新分配。
vector模拟实现[源码]
其内部实现涉及到内存管理、元素存储、异常安全保证以及迭代器支持等方面,这些都要求模拟实现时必须严格遵守vector的标准规范和行为。
C++ vector详解与模拟实现[代码]
通过学习vector的使用方法、内部原理以及模拟实现过程,可以进一步提高编程技能和软件开发水平。


