首页 > 解决方案 > c++14 - vec.begin() 和 begin(vec) 有什么区别吗

问题描述

在这个问题(https://stackoverflow.com/questions/6926433/how-to-shuffle-a-stdvector)中,user703016 使用以下语法访问矢量卡片的迭代器_:

对于 C++98,他们建议使用:cards_.begin() 和 cards_.end()

对于 C++11,他们建议使用:std::begin(cards_) 和 std::end(cards_)

对于 C++14,哪种语法更可取,两者之间有什么真正的区别吗?在今天之前,我只看到了第一种语法。

标签: c++syntaxc++11iteratorc++14

解决方案


只要您正在处理 a vector,您使用哪个就没有区别。

std::begin()并且std::end()将在某些情况下工作.begin()并且.end()不会工作。第一个是使用内置数组。例如,这将正常工作:

char foo[] = "17395";

std::sort(std::begin(foo), std::end(foo));

当然foo.begin()并且foo.end()不可能工作,因为内置数组没有任何成员函数。


推荐阅读