【发布时间】:2021-06-26 21:24:42
【问题描述】:
假设我有一个 long long 元素的向量:
std::vector<long long>V {1, 2, 3};
我已经看到,为了迭代向量,您可以这样做:
for (auto i = v.begin() ; i != v.end() ; i++)
cout<<*i;
i++ 表示i 增长了1,但是地址不应该增加8 个字节来打印下一个元素吗?所以 for 循环的“增长”部分(对于任何类型)应该如下所示:
i += sizeof(v[0]);
我假设一个地址可以容纳 1 个字节,所以如果一个整数的起始地址是 1000 ,那么它的总分配将由地址表示:1000 、 1001 、 1002 、 1003。我想了解内存更好,如果您能帮助我,我将不胜感激。
【问题讨论】:
-
更简单:
for (auto&& value : V). -
你大概有
int* pi = /*..*/; char* pc = reintepret_cast<char*>(pi); assert(pc + sizeof(int) == reintepret_cast<char*>(pi + 1))