使用std :: vector :: begin vs begin(vector)

时间:2016-02-16 11:37:12

标签: c++ c++11 vector

如果我有std::vectorstd::vector并且始终为std::vector)。

使用std::begin()代替std::vector::begin()(或相反)是否优越?

是否会有任何表现增加/减少?

示例:

std::vector<int> foo(100, 5);
std::sort(foo.begin(), foo.end());        // Case 1
std::sort(std:begin(foo), std::end(foo)); // Case 2

2 个答案:

答案 0 :(得分:4)

对于“普通”std - 容器类型std::begin(c)实际上与c.begin()相同。

答案 1 :(得分:3)

我的两便士:

  

(这是一个std :: vector,将始终是一个std :: vector)。

恕我直言,这是你现在无法做出的保证 - 这就是免费的功能形式。

  

使用std :: begin()代替std :: vector :: begin()(或相反)是否优越?

仅在自由函数形式参与ADL的意义上

  

是否会有任何表现增加/减少?

如果您启用优化器,则不会。