c++ - 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,哪种语法更可取,两者之间有什么真正的区别吗?在今天之前,我只看到了第一种语法。
解决方案
只要您正在处理 a vector
,您使用哪个就没有区别。
std::begin()
并且std::end()
将在某些情况下工作.begin()
并且.end()
不会工作。第一个是使用内置数组。例如,这将正常工作:
char foo[] = "17395";
std::sort(std::begin(foo), std::end(foo));
当然foo.begin()
并且foo.end()
不可能工作,因为内置数组没有任何成员函数。
推荐阅读
- python - OpenCV,如何加入/填充线条或框或圆圈中的间隙(Python)
- java - 如何选择日期在 date1 和 date2 之间的记录?
- amazon-s3 - 使用 ssm 从 AWS 参数存储中获取参数时显示为空
- apache - 在同一个 apache http 服务器上启动两个应用程序
- c++ - 单调布尔函数
- javascript - 如何将数组的字符串转换为数组
- javascript - 在同一文档中引用 $id 时,如何解决“无法解析引用”错误?
- haskell - 如何将上下文和 `IO` monad 隐藏到另一个 monad 中?
- php - 如何自动更改拍卖网站中的类别(例如:即将举行的拍卖、当前的拍卖和过去的拍卖)?
- android - 如何从json中获取对象内部的对象?