std::size
来自cppreference.com
| 定义于头文件 <iterator>
|
||
| template < class C > constexpr auto size( const C& c ) -> decltype(c.size()); |
(1) | (C++17 起) |
| template < class T, size_t N > constexpr size_t size( const T (&array)[N] ) noexcept; |
(2) | (C++17 起) |
返回给定容器 c 或数组 array 的大小。
1) 返回
c.size() 。2) 返回
N 。目录 |
[编辑] 参数
| c | - | 拥有 size 方法的容器
|
| array | - | 任意类型的数组 |
[编辑] 返回值
c 或 array 的大小。
[编辑] 注意
除了包含于 <iterator> ,若包含下列任一头文件,则保证 std::size 可用: <array> 、 <deque> 、 <forward_list> 、 <list> 、 <map> 、 <regex> 、 <set> 、 <string> 、 <string_view> 、 <unordered_map> 、 <unordered_set> 及 <vector> 。
[编辑] 可能的实现
| 版本一 |
|---|
template <class C> constexpr auto size(const C& c) -> decltype(c.size()) { return c.size(); } |
| 版本二 |
template <class T, std::size_t N> constexpr std::size_t size(const T (&array)[N]) noexcept { return N; } |
[编辑] 示例
运行此代码
#include <iostream> #include <vector> #include <iterator> int main() { std::vector<int> v = { 3, 1, 4 }; std::cout << std::size(v) << '\n'; int a[] = { -5, 10, 15 }; std::cout << std::size(a) << '\n'; }
输出:
3 3

