【问题标题】:c++14 - Is there any difference between vec.begin() and begin(vec) [duplicate]c ++ 14 - vec.begin()和begin(vec)之间有什么区别[重复]
【发布时间】:2018-11-23 03:47:08
【问题描述】:

在这个问题 (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,哪种语法更可取,两者之间有什么真正的区别吗?在今天之前,我只见过第一种语法。

【问题讨论】:

  • 我不明白我在发布此问题 10 秒后收到的反对票?请评论说我可以如何改进它。

标签: c++ syntax c++11 iterator c++14


【解决方案1】:

只要你处理的是vector,你使用哪个没有区别。

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

char foo[] = "17395";

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-14
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多