当我遇到数据运算符时,我只是在阅读有关向量的内容.在下面的示例中,正在使用数据运算符.
#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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
myvector contains: 10 20 0 100 0
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么0在100和100的位置向后移动一个位置.如:
p是等值的myvector[0],给定值10.++p;现在p指向给myvector[1]定的价值2020,100应该来,为什么会这样0.因为p当你这样做时你已经发生了变异
++p
Run Code Online (Sandbox Code Playgroud)
所以这个操作
p[2]
Run Code Online (Sandbox Code Playgroud)
已经被1个索引所抵消,所以就像你做的那样
p[2 + 1]
Run Code Online (Sandbox Code Playgroud)
从原来的地址p