首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STL向量算子数据

STL向量算子数据
EN

Stack Overflow用户
提问于 2015-07-20 11:16:37
回答 1查看 90关注 0票数 1

当我看到下面的数据operator.In (数据操作符正在使用)时,我正在阅读有关向量的内容。

代码语言:javascript
复制
#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;
}

输出:

代码语言:javascript
复制
myvector contains: 10 20 0 100 0

我的问题是,为什么在0f 100和100处的0向后移动一个位置。作为:

  1. p是等价的myvector[0],它是给定值10的。
  2. ++p; now p指向myvector[1]给定值20
  3. 所以在20之后,100应该来了,所以为什么会有0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-20 11:18:21

因为你已经变异了p

代码语言:javascript
复制
++p

所以这次手术

代码语言:javascript
复制
p[2]

已经被一个索引抵消了,所以就好像您已经抵消了。

代码语言:javascript
复制
p[2 + 1]

来自原始地址的p

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31515096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档