STL矢量运算符数据

STL vector operator data

本文关键字:数据 运算符 STL      更新时间:2023-10-16

当我遇到数据运算符时,我只是在阅读向量。在下面的例子中,使用了数据运算符。

#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在0和100的地方向后移动一个位置。:

  1. p等于给定值10myvector[0]
  2. ++p;现在p指向myvector[1]给定值20
  3. 那么20之后应该是100,为什么还有0呢?

因为你已经改变了p

++p

所以这个操作

p[2]

已经被偏移了1个索引,所以就好像你做了

p[2 + 1]
p地址