gpt4 book ai didi

c++ - 为什么使用迭代器而不是数组索引?

转载 作者:IT老高 更新时间:2023-10-28 11:26:24 30 4
gpt4 key购买 nike

取以下两行代码:

for (int i = 0; i < some_vector.size(); i++)
{
//do stuff
}

还有这个:

for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
some_iterator++)
{
//do stuff
}

有人告诉我,第二种方式是首选。这是为什么呢?

最佳答案

第一种形式只有当 vector.size() 是一个快速操作时才有效。例如,这对 vector 是正确的,但对于列表则不然。另外,你打算在循环体内做什么?如果您打算访问元素,如

T elem = some_vector[i];

那么您假设容器已定义 operator[](std::size_t)。同样,这适用于 vector ,但不适用于其他容器。

迭代器的使用使您更接近容器独立性。您没有对随机访问能力或快速 size() 操作做出假设,只是容器具有迭代器功能。

您可以使用标准算法进一步增强您的代码。根据您要实现的目标,您可以选择使用 std::for_each()std::transform() 等。通过使用标准算法而不是显式循环,您可以避免重新发明轮子。您的代码可能更高效(如果选择了正确的算法)、正确且可重用。

关于c++ - 为什么使用迭代器而不是数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/131241/

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