STL矢量运算符数据
STL vector operator 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在0和100的地方向后移动一个位置。:
-
p
等于给定值10
的myvector[0]
。 -
++p;
现在p
指向myvector[1]
给定值20
- 那么
20
之后应该是100
,为什么还有0
呢?
因为你已经改变了p
++p
所以这个操作
p[2]
已经被偏移了1个索引,所以就好像你做了
p[2 + 1]
p
的原地址
相关文章:
- 在C++中,运算符 sizeof 返回什么数据类型?
- 运算符重载以显示用户定义的数据类型
- 如何重载 << 运算符,以便将对象的数据写入文件?
- 使用 delete [] 运算符取消分配类中数据成员的内存
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 用于多维数据访问的重载 () 运算符
- 将文本文件数据读入字符数组时提取运算符的歧义
- 将运算符<<与隐式转换的非基本数据类型一起使用时出错
- 如何在 C++ 中使用删除运算符删除单个数据
- 使用 insertion(<<) 运算符和 "write" 函数在 C++ 中显示数据有什么区别?
- 如何将模运算符与其他数据类型一起使用
- 具有临时对象的 Fundamenta 数据类型赋值运算符
- 是否应该在复制构造函数或赋值运算符中复制静态数据成员
- 重载运算符返回的对象正在丢失 C++ 中的数据
- 通过使用具有私有数据成员的类重载 + 运算符来添加分数
- 运算符 [] 重载返回错误的数据
- 是否有必要重载具有另一个类 B 的数据成员的类 A 的赋值运算符和复制构造函数?
- 通过指针访问数据(重新解释转换)与 .或 ->运算符
- Boost 的数据驱动测试的联接运算符"+"损坏了第一列
- C++ 在覆盖新运算符和删除运算符时不释放数据