我正在乱搞,试图弄清楚如何std::vector管理其底层数组的大小.我知道它会进行某种调整,例如,当调用底层数组已满时尝试添加元素时,创建一个大小为前一个数组大小两倍的新数组并将旧值复制到其中(或类似的东西).
所以我就这样做了
#include <iostream>
#include <vector>
int main()
{
std::vector<int> myVec;
for (int i = 1; i < 10000; ++i)
{
myVec.push_back(i);
std::cout << i << " elements in vector; size of vector is " << sizeof(myVec) << " bytes." << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印出来的
1 elements in vector; size of vector is 28 bytes.
2 elements in vector; size of vector is 28 bytes.
3 elements in vector; size of vector is 28 bytes.
4 elements in vector; size of vector is 28 bytes.
5 elements in vector; size of vector is 28 bytes.
6 elements in vector; size of vector is 28 bytes.
7 elements in vector; size of vector is 28 bytes.
8 elements in vector; size of vector is 28 bytes.
9 elements in vector; size of vector is 28 bytes.
10 elements in vector; size of vector is 28 bytes.
11 elements in vector; size of vector is 28 bytes.
12 elements in vector; size of vector is 28 bytes.
13 elements in vector; size of vector is 28 bytes.
14 elements in vector; size of vector is 28 bytes.
15 elements in vector; size of vector is 28 bytes.
16 elements in vector; size of vector is 28 bytes.
17 elements in vector; size of vector is 28 bytes.
18 elements in vector; size of vector is 28 bytes.
19 elements in vector; size of vector is 28 bytes.
20 elements in vector; size of vector is 28 bytes.
21 elements in vector; size of vector is 28 bytes.
22 elements in vector; size of vector is 28 bytes.
23 elements in vector; size of vector is 28 bytes.
24 elements in vector; size of vector is 28 bytes.
25 elements in vector; size of vector is 28 bytes.
26 elements in vector; size of vector is 28 bytes.
27 elements in vector; size of vector is 28 bytes.
28 elements in vector; size of vector is 28 bytes.
29 elements in vector; size of vector is 28 bytes.
30 elements in vector; size of vector is 28 bytes.
31 elements in vector; size of vector is 28 bytes.
32 elements in vector; size of vector is 28 bytes.
etcetera
Run Code Online (Sandbox Code Playgroud)
我意识到这是因为我正在查看向量的大小,其中包含指向底层数组的指针,因此向量的大小不包括底层数组的大小.鉴于我没有看到任何可以直接访问底层阵列的地方(http://www.cplusplus.com/reference/vector/vector/),我该怎么办?我真正想做的就是看看底层数据如何随着元素逐个加1而周期性地"跳跃".
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |