STL矢量运算符数据

时间:2015-07-20 11:16:38

标签: c++ vector stl

当我遇到数据运算符时,我只是在阅读有关向量的内容。在下面的示例中,正在使用数据运算符。

#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到100和100的位置向后移动一个位置。 为:

  1. p相当于myvector[0],其值为10
  2. ++p;现在p指向myvector[1]给定值20
  3. 所以在20之后,100应该会出现0

2 个答案:

答案 0 :(得分:7)

因为你做了

时你已经变异了p
++p

所以这个操作

p[2]

已经被1个索引偏移,所以就像你做的那样

p[2 + 1]

来自p

原始地址

答案 1 :(得分:-1)

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [NE,R=301,L]