什么是.begin()和.end()?

mil*_*lim 14 c++ arrays std stdarray

在C++库数组中,在哪些情况下,拥有.begin().end()成员函数是有用的?

在cplusplus.com上,示例用法是遍历数组:

for ( auto it = myarray.begin(); it != myarray.end(); ++it )
Run Code Online (Sandbox Code Playgroud)

for (int i = 0; i < myarray.size(); i++)
Run Code Online (Sandbox Code Playgroud)

可以用于此.

Mak*_*jov 26

begin()end()返回迭代器.迭代器提供统一的语法来访问不同类型的容器.乍一看,它们可能看起来像遍历一个简单的数组,但考虑到您可以编写相同的代码来遍历列表或地图.

这种对各种容器的统一访问将允许您编写适用于所有容器的算法,而无需了解其内部结构.从开始到结束的for循环只是一个更大的马赛克中的第一块.只需查看标准算法列表即可了解这种简单抽象的强大功能.


Rob*_*obs 10

标准容器的重点是能够更改它们并使用相同的语法.如果您有链接列表,则第一个语法仍然有效.

它也相当于一个指针.我是一个索引,所以myarray [i]比它慢一点.

  • ...而且,更重要的是,在容器上使用相同的迭代语法意味着您可以编写适用于其中任何一个的模板. (2认同)

Jar*_*d42 7

除了是通用的与其他容器,begin,end是有用的为范围

for (const auto& e : myarray)
Run Code Online (Sandbox Code Playgroud)