.begin() 和 .end() 有什么意义?
Whats the point of .begin() and .end()?
在 C++ 库数组中,在哪些情况下使用 .begin()
和 .end()
成员函数是有用的?
在 cplusplus.com 上,示例使用的是遍历数组:
for ( auto it = myarray.begin(); it != myarray.end(); ++it )
但是
for (int i = 0; i < myarray.size(); i++)
可用于此。
标准容器的全部意义在于能够更改它们并使用相同的语法。如果你有一个链表,第一个语法仍然有效。
也相当于一个指针。 i 是一个索引,所以 myarray[i] 比它稍慢。
begin()
和 end()
return 迭代器。迭代器提供统一的语法来访问不同类型的容器。乍一看,它们对于遍历一个简单的数组来说可能有点矫枉过正,但考虑到您可以编写相同的代码来遍历一个列表或一个映射。
这种对各种容器的统一访问将允许您编写适用于所有容器的算法,而无需了解它们的内部结构。从开始到结束的 for 循环只是更大马赛克中的第一部分。只需查看 standard algorithms 的列表即可领略这种简单抽象的力量。
除了与其他容器通用外,begin
、end
对for range
有用
for (const auto& e : myarray)
现在尝试遍历链表。唯一有效的方法是从一项迭代到下一项,直到到达终点。
在 C++ 库数组中,在哪些情况下使用 .begin()
和 .end()
成员函数是有用的?
在 cplusplus.com 上,示例使用的是遍历数组:
for ( auto it = myarray.begin(); it != myarray.end(); ++it )
但是
for (int i = 0; i < myarray.size(); i++)
可用于此。
标准容器的全部意义在于能够更改它们并使用相同的语法。如果你有一个链表,第一个语法仍然有效。
也相当于一个指针。 i 是一个索引,所以 myarray[i] 比它稍慢。
begin()
和 end()
return 迭代器。迭代器提供统一的语法来访问不同类型的容器。乍一看,它们对于遍历一个简单的数组来说可能有点矫枉过正,但考虑到您可以编写相同的代码来遍历一个列表或一个映射。
这种对各种容器的统一访问将允许您编写适用于所有容器的算法,而无需了解它们的内部结构。从开始到结束的 for 循环只是更大马赛克中的第一部分。只需查看 standard algorithms 的列表即可领略这种简单抽象的力量。
除了与其他容器通用外,begin
、end
对for range
for (const auto& e : myarray)
现在尝试遍历链表。唯一有效的方法是从一项迭代到下一项,直到到达终点。