在这个问题(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,哪种语法更可取,两者之间有什么真正的区别?在今天之前,我只看过第一种语法。
答案 0 :(得分:5)
只要您处理vector
,就没有任何区别。
std::begin()
和std::end()
会在.begin()
和.end()
无法正常工作的某些情况下发挥作用。主要的是使用内置数组。例如,这将正常工作:
char foo[] = "17395";
std::sort(std::begin(foo), std::end(foo));
当然foo.begin()
和foo.end()
可能无法正常工作,因为内置数组没有任何成员函数。