我在http://www.cplusplus.com/reference/vector/vector/data/中找到了std :: vector的示例。
// vector::data
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector (5);
int* p = myvector.data();
*p = 10;
++p;
*p = 20;
p[2] = 100;
std::cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
std::cout << ' ' << myvector[i];
std::cout << '\n';
return 0;
}
结果是
myvector contains: 10 20 0 100 0
我的问题可能很愚蠢,但我不太了解这里发生了什么。我们直接指向向量的内存。然后,我们为第一个元素(索引0)分配值10,移至第二个元素,并为其分配值20(索引1)。最后,我们为第三个元素(索引2)分配值100。答案应该如下吗?
10 20 100 0 0
这张图片可能有助于说明
int* p = myvector.data();
[ ] [ ] [ ] [ ] [ ]
^
*p = 10;
[10 ] [ ] [ ] [ ] [ ]
^
++p;
[10 ] [ ] [ ] [ ] [ ]
^
*p = 20;
[10 ] [20 ] [ ] [ ] [ ]
^
p[2] = 100; // [2] is relative to where p is
[10 ] [20 ] [ ] [100] [ ]
^
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句