每个标准容器都有一个beginand end方法,用于返回该容器的迭代器。但是,C ++ 11显然引入了称为std::begin和的自由函数,std::end它们调用begin和end成员函数。所以,不用写 auto i = v.begin(); auto e = v.end(); 你会写 auto i = std::begin(v); auto e = std::end(v); Herb Sutter 在他的写现代C ++的演讲中说,当您想要容器的开始或结束迭代器时,应该始终使用自由函数。但是,他没有详细说明您为什么要这么做。查看代码,可以节省一个字符。因此,就标准容器而言,自由功能似乎完全没有用。赫伯·萨特(Herb Sutter)表示,使用非标准容器也有好处,但是他没有详细介绍。 那么,问题到底是什么做的免费功能的版本std::begin,并std::end做超出调用它们相应的成员函数的版本,你为什么要使用它们?