为什么没有std :: size?

丹尼尔

斯科特·迈耶斯Scott Meyers)赫伯·萨特Herb Sutter)其他人提倡非成员函数而非成员函数。而随着增加,如std::beginstd::cend等,似乎STL是朝着这个方向努力。如果是这样,为什么没有std::size呢?

我认为是因为定义您自己的版本非常容易:

namespace std {
    // C++14
    template <typename C>
    decltype(auto) size(const C& c)
    {
        return distance(cbegin(c), cend(c));
    }
}

还是我错过了什么?即有没有不使用非会员的理由size吗?

TC

为什么没有std::size

因为没有人及时编写提案以使其包含在C ++ 14中。提案的初稿定于2014年5月,远远早于2014年2月发送C ++ 14标准进行最后一轮投票。

该提案的修订版在11月的委员会上次会议上投票通过了C ++工作文件(请参阅LWG动议20),因此您很可能会在下一版标准(C ++ 17)中看到它。 ,以及std::empty()std::data()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++ STL-为什么std :: forward_list没有size()方法?

为什么ArrayList没有getSize()而不是size()?

为什么Scala列表没有size字段?

为什么 flink MapState 没有 size 方法?

为什么在没有传统标头的情况下在MSVS中使用size_t和std :: size_t?

为什么std :: bitset :: size是非静态的

为什么std :: array :: size constexpr具有简单类型(int,double,...)而不是std :: vector(GCC)?

为什么 text.size() 返回 std::size_t 而不是 std::string::size_type

为什么std :: allocator <> :: deallocate()具有不使用的size_type参数?

为什么find -size -1G没有找到任何文件?

为什么boost :: adaptors :: filtered的输出没有名为size的成员?

为什么std :: string :: max_size的值“奇怪”?

为什么std :: span缺少size_type?

为什么会出现错误:size不是std的成员?

没有size参数的CString :: GetBuffer()有什么作用?

为什么std ::没有比“ <”更好?

为什么没有std :: on_exit?

为什么没有std :: erase?

C ++:为什么int array [size]有效?

为什么std :: copy_n使用模板参数而不是std :: size_t?

为什么 std::initializer_list 不支持 std::get<>、std::tuple_size 和 std::tuple_element

为什么没有std :: to_string的std :: string重载

为什么std :: valarray没有std :: data()重载?

为什么我的控制台输入没有终止。如果我删除代码 countSwaps(a,size) 然后控制台输入终止否则不

std :: match_results :: size返回什么?

为什么std :: filesystem :: file_size在目录上留给实现?

为什么GCC不能假设std :: vector :: size在此循环中不会改变?

为什么std :: hex会导致内存损坏vector.size()?

为什么<iterator>的std :: size无法与原始数组参数一起使用