gpt4 book ai didi

c++ - 指针运算是否适用于迭代器?

转载 作者:行者123 更新时间:2023-11-30 03:24:25 27 4
gpt4 key购买 nike

假设您有以下 vector 和 C 数组:

vector<long> v = {1,2,3,4,5};
for (auto start_itr = v.begin(); start_itr != v.end(); ++start_itr) {
statements;
}

long ary[5]{1,2,3,4,5};
for (long *ptr = ary; ptr < (ary+5); ++ptr) {
statements;
}

在数组的代码中,++ptr指的是ptr加1,即指针运算——加8字节移动到数组的下一个long元素。然而,对于 vector ,指针运算的相同原理是否适用?即向 start_itr 加 1 意味着向上移动 8 个字节到下一个元素 b/c 它是一个 longs vector ?

我知道迭代器类型本质上是一个指针,这是有道理的,但我想确定一下。

最佳答案

vector 上的迭代器是指针的免费抽象。所以 ++ 向前移动 1,+7 移动 7,等等。

vector 迭代器是随机访问迭代器,因此它们的行为很像指针。就像指针一样,前进到最后一个元素(又名 .end())是未定义的行为。

其他迭代器更受约束; std::liststd::map 不支持 +7,但支持 ++

关于c++ - 指针运算是否适用于迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com